NuGet内容文件是如何工作的?

NuGet内容文件是如何工作的?,nuget,Nuget,我正在尝试创建一个nuget包,其中包含可用于不同类型项目的内容 TestSource.nuspec如下所示: (该文件既可用作contentFiles\cs\any\TestSource.cs也可用作TestFolder\TestSource.cs) 所创建的包在“普通”项目中工作正常,但在packagereference项目中没有发生任何事情 我想我错过了一些简单的东西,这是我自己发现的 您需要在“文件”部分添加两次该文件 <contentFiles> <f

我正在尝试创建一个nuget包,其中包含可用于不同类型项目的内容

TestSource.nuspec如下所示:

(该文件既可用作
contentFiles\cs\any\TestSource.cs
也可用作
TestFolder\TestSource.cs

所创建的包在“普通”项目中工作正常,但在packagereference项目中没有发生任何事情

我想我错过了一些简单的东西,这是我自己发现的

您需要在“文件”部分添加两次该文件

  <contentFiles>
    <files include="cs\any\TestSource.cs" buildAction="Compile" />
  </contentFiles>
</metadata>
<files> 
  <file src="TestFolder\TestSource.cs" target="content/TestFolder" />
  <file src="TestFolder\TestSource.cs" target="contentFiles/cs/any" />
</files>

然后,包将同时适用于普通项目和packagereference项目。

将告诉包在打包时从何处获取文件。将告诉包在生成包含此包的项目时要提取的内容。将创建包时使用的.nuspec文件与生成的包中的文件进行比较。您会注意到,元素在仍然存在的时候就消失了(有时在打包过程中会有一些变化)。这背后的理由是,一旦打包好包,文件的来源就无关紧要了。