如何包装项目和使用的NuGet包+文件?(How to package projects and u

2019-09-28 09:24发布

我工作的一个.NET 2.0标准的项目称为ComputeSharp ,我遇到了一些麻烦,从它创建一个NuGet包。 一些信息:

  • 该项目只面向.NET 2.0标准
  • 该项目将使用相同的解决方案2中引用项目,每个项目使用一些其他的NuGet包。 这是我目前的解决方案的屏幕。
  • 该项目的, ComputeSharp.Shaders还引用两个.dll文件, dxcompiler.dlldxil.dll 这两个是通过在其.csproj的文件中的以下剪断该项目引用。 我做了一个公关DotNetDxc与更新.dll文件,所以我将不再需要手动两个.dll文件捆绑为我的项目。 因此,这已经不再是一个问题✅
  • 在主文件夹ComputeSharp项目,我也有以下结构,其中还列出了所有3个项目中使用的所有的NuGet包一个.nu​​spec文件(注意,对于路径*.mustache文件上升一个目录,因为它是里面ComputeSharp.Shaders项目,而不是一个我从中建立NuGet包,这仅仅是ComputeSharp
<?xml version="1.0"?>
<package >
  <metadata>
    <id>ComputeSharp</id>
    ...
    <dependencies>
      <dependency id="SharpDX.Direct3D12" version="4.2.1-beta0-gab36f12303" />
      ...
    </dependencies>
    <contentFiles>
      <files include="..\ComputeSharp.Shaders\Renderer\Templates\*.mustache" buildAction="None" copyToOutput="true" />
    </contentFiles>
  </metadata>
</package>
  • 为了创建NuGet包,我先建ComputeSharp在Release模式,则该项目的文件夹中打开cmd,然后运行:
nuget pack ComputeSharp.csproj -Prop Configuration=Release -IncludeReferencedProjects
  • 这确实创建一个包,看上去还挺好的。 它包含了所有3个项目的组件, 我用两个.dll文件.mustache从内容文件ComputeSharp.Shaders项目。
  • 一旦上传到的NuGet我可以看到所有的依赖关系的列表的包,你可以看到在这个屏幕 。 所以,这看起来是不错的方法好。

问题 :当我创建一个测试项目,并安装NuGet包, 我注意到两两件事:首先得到这个漂亮的例外 ,当我尝试使用任何API,这使我的事情其他的NuGet包没有被正确安装在所有,然后,我找不到任何无论从这些程序包的原料药(如:我没有看到SharpDX命名空间的话),这使我的事情之前的点可能是正确的。 我还有最后一个问题: .mustache文件(及相关的父文件夹)不会在构建输出目录中创建的,所以我不能在运行时加载它。 我不知道这是为什么,因为我没有指定copyToOutputDirectory="true"在.nu​​spec文件。

我可能失去了一些东西很明显,我也同时检查文档和的NuGet包和诸如此类的东西无数其他SO问题,但我真的无法弄清楚我在做什么错在这里。 我有其他的NuGet包上传,使用包括在.nuspec文件所引用的NuGet包的方法,以及安装时,他们的工作只是罚款。

谢谢您的帮助!

编辑#1:间接依赖现在正确加载,所以最后剩下的问题是没有被复制到构建输出目录(参见上述变化)的内容文件。

编辑#2:关闭这个,因为它的范围太广,并且第一部分已经被解决(.dll文件和间接包的引用)。 打开一个跟进的问题只是关于不被复制的内容文件的问题在这里 。

文章来源: How to package projects and used NuGet packages + files?