4

我有一个包含非常详细的配置部分的库。我创建了一个 XSD,并希望将它与我的包一起分发,以便当用户安装包时,Visual Studio 知道 XSD,而用户无需做任何额外的事情。我该怎么做呢?

4

2 回答 2

3

您可以通过将它们放在内容目录中来将所需的任何文件包含在 nuget 包中。然后在安装包时将它们安装到目标项目的根目录中。如果您使用 nuspec 文件来构建您的包,您将在该元素下添加以下元素。

<files>
    <file src="Configuration\MyXsd.xsd" target="content\TargetFolderName" />
</files>

这将在目标项目中创建以下文件

\TargetFolderName\MyXsd.xsd

一旦 xsd 在目标项目中,visual studio 应该会自动将其拾取以验证您的配置部分。

于 2013-08-30T06:21:36.210 回答
1

最近,SDK 样式项目和引用 nuget 包的不同方式变得更加复杂。

请注意本节的结尾。

基本上,如果 package.config 文件引用了 nuget 项目,则 nuget 包的 content 文件夹中的文件将被复制到引用项目中。如果项目文件中的 PackageReference 引用了 nuget 包,则将使用包内 contentFiles 文件夹中的文件。建议两者都包含。

现在,如果您使用 .nuspec 文件来配置您的 nuget 包,您可以使用SynXsiS 答案将文件包含到两个目录中:

<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、...)和目标框架。

请注意,该项目不一定必须是“无”类型,也可以是“内容”和此处描述的其他类型。

您可以在此处找到此结构的所有信息,可以在此处找到文件夹结构的一般信息,并在此处找到SDK 样式项目的帮助。

于 2019-01-21T09:15:47.877 回答