我有一个包含非常详细的配置部分的库。我已经创建了一个XSD,并希望将其与我的软件包一起分发,这样当用户安装软件包时,Visual Studio就会知道XSD而无需用户做任何额外的事情。我该怎么做?
答案 0 :(得分:3)
您可以将nuget包中的所有文件放在内容目录中。然后,在安装软件包时,这些将安装到目标项目的根目录中。如果您使用nuspec文件来构建包,则应在元素下添加以下元素。
<files>
<file src="Configuration\MyXsd.xsd" target="content\TargetFolderName" />
</files>
这将在目标项目中创建以下文件
\TargetFolderName\MyXsd.xsd
一旦xsd进入目标项目,visual studio应该自动选择它以验证你的配置部分。
答案 1 :(得分:0)
最近,随着SDK风格的项目以及引用nuget包的方式不同,这种情况变得更加复杂。
的结尾基本上,如果package.config文件引用了nuget项目,则nuget包的content文件夹中的文件将被复制到引用项目。如果nuget包在项目文件中被PackageReference引用,则将使用该包内contentFiles文件夹中的文件。建议同时包含两者。
现在,如果您使用.nuspec文件配置nuget软件包,则可以使用SynXsiS answer将文件包括在两个目录中:
<files>
<file src="Configuration\MyXsd.xsd" target="content\TargetFolderName" />
<file src="Configuration\MyXsd.xsd" target="contentFiles\any\any\TargetFolderName" />
</files>
但是,如果要在SDK项目的.csproj文件中进行配置,则必须将要包含在nuget包中的文件添加到具有以下属性的项目文件中:
<ItemGroup>
<None Include="MyXsd.xsd">
<Pack>true</Pack>
<PackagePath>contentFiles\any\any\TargetFolderName;content\TargetFolderName</PackagePath>
</None>
</ItemGroup>
contentFiles路径的any \ any \部分指定了文件所使用的语言(cs,vb,...)和目标框架。
请注意,该项目不一定必须是“无”类型,它也可以是“内容”和其他内容,如here所述。
您可以找到有关该结构here的所有信息,可以找到有关文件夹结构的常规信息here,并可以为SDK样式项目提供帮助here。