我有一组 .NET Framework 4.8 项目,它们都包含相同的一组用于 XML 验证的 XSD 文件。我在 .netstandard 2.0 中创建了一个非常基本的 XML 验证 NuGet 包,其中将这些 XSD 包含在一个位置,这样它们就不会失去同步。 .netstandard 2.0 项目中包含一个
Xsds
文件夹,其中包含多个带有“CopyAlways”的 XSD 文件。
下面是从另一个项目访问
XmlUtils
NuGet 包的简单方法。
XmlType xmlType = XmlType.SpecificFile;
XmlDocument xmlFile = new XmlDocument();
xmlFile.Load(File.ReadAllText("PathToXmlFile.xml"));
List<string> errors = XmlUtils.ValidateXmlFile(xmlType, xmlFile);
上面的内容按预期工作,但是我已经做了几个小时的研究,但还没有找到一种方法来获取导入此 NuGet 包的项目来创建包含 XSD 文件的
Xsds
文件夹。
我已经成功地让 NuGet 包在导入项目的根级别创建
Xsds
文件夹,但我明确不想这样做。我只希望 XmlUtils
类可用(我已经完成了),并且每当构建引用项目时都会构建 Xsds
文件夹。
我的csproj当前有以下内容:
<ItemGroup>
<None Include="Xsds\*.xsd" Pack="True" PackagePath="Xsds\">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
今天早上找到了解决方案。
<None Include="Xsds\*.xsd">
<pack>true</pack>
<PackagePath>contentFiles\any\any\Xsds\</PackagePath>
<PackageCopyToOutput>true</PackageCopyToOutput>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
我想知道这是否可以通过packages.config 来实现。令人烦恼的是,除非用户以特定方式执行此操作,否则这个 NuGet 包根本无法工作..