NuGet 3.3+:contentFiles未添加到项目中

Dan*_*opp 6 nuget

在阅读了我可以找到的关于contentFilesNuGet 3.3+ 的新元素的所有内容之后,我仍然无法让它在我的包中运行.我有一个包,都作为目标net46uap10.0,以及项目类型和平台的工作权的DLL的选择预期.但我还想在程序包安装时向项目添加两个文件,一个用于所有项目和平台的CSV文件,以及一个用于C#或VB.Net(带buildAction="Compile")的代码文件.这是我最新的.nuspec文件的删节版本:

<?xml version="1.0" encoding="utf-8" ?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata minClientVersion="3.3.0">
    ...
    <contentFiles>
      <files include="any\any\ErrorCodes.csv" buildAction="None" copyToOutput="false" />
      <files include="cs\any\Errors.cs.pp" buildAction="Compile" />
      <files include="vb\any\Errors.vb" buildAction="Compile" />
    </contentFiles>
  </metadata>
  <files>
    <file src="contentFiles\any\any\ErrorCodes.csv" target="contentFiles\any\any\" />
    <file src="contentFiles\cs\any\Errors.cs.pp" target="contentFiles\cs\any\" />
    <file src="contentFiles\vb\any\Errors.vb" target="contentFiles\vb\any\" />
    ...
  </files>
</package>
Run Code Online (Sandbox Code Playgroud)

创建包时没有错误,它确实包含具有指定目录结构的contentFiles文件夹中的三个文件.

但是当我安装软件包时 - 我尝试使用通用应用程序(C#和VB)和我修改为使用project.json文件的.NET 4.6控制台应用程序- 添加了对DLL的引用,但是既未添加内容文件到项目结构,也没有复制到项目目录中.

我很感激任何投入!

Dan*_*opp 6

好的,我发现contentFiles实际上正在工作,但不是我预期的方式.对于找不到他/她的contentFiles的每个人的简短描述:

  • NuGet 3.3+ contentFiles 添加到项目结构中.您将无法在Visual Studio中看到它们.
  • 相反,文件被提取到项目的obj文件夹中的文件夹中,并被引用(如果文件是代码).您甚至可以在IntelliSense中查看contentFiles代码文件中的类或方法.就我而言,Errors该类是可访问的,尽管它在项目的任何地方都不可见.
  • 提取文件的路径具有以下模式:\ obj\<Debug或Release>\NuGet\<some GUID>\<NuGet包名称>\<版本> \

我不确定我是否喜欢这种新机制.来自Visual Studio中看不到的一些隐形源的代码(通过NuGet发布的库在References中可见,它通过contentFiles带来的任何代码都没有)可能有时会出现问题.我实际上发现当我在Visual Studio中出现歧义错误时,contentFiles机制正在工作,因为NuGet包中的"不可见"Errors.cs与我手动添加到项目中的"可见"Errors.cs相撞.