我工作的一个.NET 2.0标准的项目称为ComputeSharp ,我遇到了一些麻烦,从它创建一个NuGet包。 一些信息:
- 该项目只面向.NET 2.0标准
- 该项目将使用相同的解决方案2中引用项目,每个项目使用一些其他的NuGet包。 这是我目前的解决方案的屏幕。
-
该项目的,ComputeSharp.Shaders
还引用两个.dll文件,dxcompiler.dll
和dxil.dll
。这两个是通过在其.csproj的文件中的以下剪断该项目引用。我做了一个公关DotNetDxc
与更新.dll文件,所以我将不再需要手动两个.dll文件捆绑为我的项目。 因此,这已经不再是一个问题✅ - 在主文件夹
ComputeSharp
项目,我也有以下结构,其中还列出了所有3个项目中使用的所有的NuGet包一个.nuspec文件(注意,对于路径*.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"
在.nuspec文件。
我可能失去了一些东西很明显,我也同时检查文档和的NuGet包和诸如此类的东西无数其他SO问题,但我真的无法弄清楚我在做什么错在这里。 我有其他的NuGet包上传,使用包括在.nuspec文件所引用的NuGet包的方法,以及安装时,他们的工作只是罚款。
谢谢您的帮助!
编辑#1:间接依赖现在正确加载,所以最后剩下的问题是没有被复制到构建输出目录(参见上述变化)的内容文件。
编辑#2:关闭这个,因为它的范围太广,并且第一部分已经被解决(.dll文件和间接包的引用)。 打开一个跟进的问题只是关于不被复制的内容文件的问题在这里 。