SHA256
forked from ADOFAIEditorForum/ADOFAIRenderer
166 lines
8.0 KiB
XML
166 lines
8.0 KiB
XML
<Project Sdk="Microsoft.NET.Sdk">
|
|
|
|
<PropertyGroup>
|
|
<TargetFramework>netstandard2.1</TargetFramework>
|
|
<Nullable>enable</Nullable>
|
|
<NoWarn>MSB3277;1591</NoWarn>
|
|
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
|
<EnableSourceControlManagerQueries>false</EnableSourceControlManagerQueries>
|
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
|
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
|
<LangVersion>11</LangVersion>
|
|
<PackageLicenseExpression>GPL-3.0-or-later</PackageLicenseExpression>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<Reference Include="0Harmony">
|
|
<HintPath>$(ADOFAI_PATH)\MelonLoader\net35\0Harmony.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="O5Kit">
|
|
<HintPath>$(ADOFAI_PATH)\UserLibs\O5Kit.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="Assembly-CSharp">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\Assembly-CSharp.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="Assembly-CSharp-firstpass">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\Assembly-CSharp-firstpass.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="DOTween">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\DOTween.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="MelonLoader">
|
|
<HintPath>$(ADOFAI_PATH)\MelonLoader\net35\MelonLoader.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="RDTools">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\RDTools.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="SkyHook.Unity">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\SkyHook.Unity.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="Unity.TextMeshPro">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\Unity.TextMeshPro.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="UnityEngine">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\UnityEngine.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="UnityEngine.AssetBundleModule">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\UnityEngine.AssetBundleModule.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="UnityEngine.AudioModule">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\UnityEngine.AudioModule.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="UnityEngine.CoreModule">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="UnityEngine.IMGUIModule">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\UnityEngine.IMGUIModule.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="UnityEngine.ParticleSystemModule">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\UnityEngine.ParticleSystemModule.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="UnityEngine.TextRenderingModule">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\UnityEngine.TextRenderingModule.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="UnityEngine.InputLegacyModule">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\UnityEngine.InputLegacyModule.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="UnityEngine.InputModule">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\UnityEngine.InputModule.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="UnityEngine.UI">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\UnityEngine.UI.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="UnityEngine.UIElementsModule">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\UnityEngine.UIElementsModule.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="UnityEngine.UIModule">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\UnityEngine.UIModule.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="UnityEngine.VideoModule">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\UnityEngine.VideoModule.dll</HintPath>
|
|
</Reference>
|
|
<Reference Include="Newtonsoft.Json">
|
|
<HintPath>$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed\Newtonsoft.Json.dll</HintPath>
|
|
</Reference>
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<PackageReference Include="FFmpeg.AutoGen" Version="8.1.0" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<EmbeddedResource Include="Localization/Locale/*.json" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<Folder Include="Bundle/" />
|
|
<EmbeddedResource Include="Bundle/Linux/*" />
|
|
<EmbeddedResource Include="Bundle/Win64/*" />
|
|
<EmbeddedResource Include="Bundle/OSX/*" />
|
|
</ItemGroup>
|
|
|
|
<!-- Build 후 XML 문서에서 ADOFAIRenderer.API 네임스페이스만 남기고 나머지 제거 -->
|
|
<UsingTask TaskName="FilterXmlDoc" TaskFactory="RoslynCodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
|
|
<ParameterGroup>
|
|
<XmlFilePath ParameterType="System.String" Required="true" />
|
|
<TargetNamespace ParameterType="System.String" Required="true" />
|
|
</ParameterGroup>
|
|
<Task>
|
|
<Using Namespace="System" />
|
|
<Using Namespace="System.IO" />
|
|
<Using Namespace="System.Collections.Generic" />
|
|
<Using Namespace="System.Xml.Linq" />
|
|
<Code Type="Fragment" Language="cs">
|
|
<![CDATA[
|
|
if (!File.Exists(XmlFilePath)) return true;
|
|
try
|
|
{
|
|
var doc = XDocument.Load(XmlFilePath);
|
|
var members = doc.Root?.Element("members");
|
|
if (members != null)
|
|
{
|
|
var prefix = TargetNamespace + ".";
|
|
var toRemove = new List<XElement>();
|
|
|
|
foreach (var member in members.Elements("member"))
|
|
{
|
|
var nameAttr = member.Attribute("name")?.Value;
|
|
if (string.IsNullOrEmpty(nameAttr)) continue;
|
|
|
|
// XML 주석 형식: T:네임스페이스.타입, M:메서드, P:프로퍼티, F:필드/열거형, E:이벤트 등
|
|
int colonIndex = nameAttr.IndexOf(':');
|
|
string fullName = colonIndex >= 0 ? nameAttr.Substring(colonIndex + 1) : nameAttr;
|
|
|
|
if (!fullName.StartsWith(prefix, StringComparison.Ordinal) && !fullName.Equals(TargetNamespace, StringComparison.Ordinal))
|
|
{
|
|
toRemove.Add(member);
|
|
}
|
|
}
|
|
|
|
foreach (var elem in toRemove)
|
|
{
|
|
elem.Remove();
|
|
}
|
|
|
|
doc.Save(XmlFilePath);
|
|
Log.LogMessage(Microsoft.Build.Framework.MessageImportance.High, $"[FilterXmlDoc] Kept '{TargetNamespace}' namespace docs. Removed {toRemove.Count} other members.");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log.LogWarning($"[FilterXmlDoc] XML filtering failed: {ex.Message}");
|
|
}
|
|
]]>
|
|
</Code>
|
|
</Task>
|
|
</UsingTask>
|
|
|
|
<Target Name="FilterDocumentationFile" AfterTargets="Build" Condition="'$(GenerateDocumentationFile)' == 'true'">
|
|
<PropertyGroup>
|
|
<_XmlDocPath Condition="'$(_XmlDocPath)' == '' and Exists('$(TargetDir)$(TargetName).xml')">$(TargetDir)$(TargetName).xml</_XmlDocPath>
|
|
<_XmlDocPath Condition="'$(_XmlDocPath)' == '' and Exists('$(DocumentationFile)')">$(DocumentationFile)</_XmlDocPath>
|
|
</PropertyGroup>
|
|
<FilterXmlDoc Condition="'$(_XmlDocPath)' != ''" XmlFilePath="$(_XmlDocPath)" TargetNamespace="ADOFAIRenderer.API" />
|
|
</Target>
|
|
</Project>
|