我走进这个问题之前,让我很快地解释我的目标:NuGet包 - 引用的程序不被列为项目参考
我有我使用的每一个网站,我建,其中包括一个模板项目基类,常用页面(例如联系我们),有用的实用程序(异常日志记录)等。我想使这个模板可重用和可更新。以前我使用的是Visual Studio项目模板,但是我在引用所有需要的程序集时遇到了问题,所以我转向了Nuget。我的印象是这样会更容易,同时也给我提供了额外的好处。
问题:
我无法弄清楚如何创建一个NuGet包,其中将包括(解决方案中的我的本地机器上的两个其他项目和DLL)包中的所有引用,也使他们安装此模板的子项目中的依赖关系。
这是我得到了多少:
a。在该项目的nuspec文件中,我有以下内容:
<references>
<reference file="AjaxControlToolkit.dll" /> <!-- nuget dependency -->
<reference file="BjxContacts.Shared.dll" /> <!-- project dependency -->
<reference file="SomeExample.exe" /> <!-- exe local file dependency -->
<reference file="SomeOther.dll" /> <!-- dll local file dependency -->
</references>
<files>
<file src="bin\*.pdb" target="lib" />
<file src="bin\*.dll" target="lib"/>
<file src="bin\*.exe" target="lib"/>
<file src="bin\*.xml" target="lib"/>
</files>
b。当我运行pack命令时,我使用以下命令:nuget pack {projectname} .csproj - IncludeReferencedProjects -Symbols
c。输出是两个独立的项目,一个与.symbols,一个没有,它看起来像这样在Package Explorer中:
所以在这一点上,感觉就像我一切正常。但是,一旦我在Visual Studio中创建了一个新的空Web应用程序并安装此包,则这些引用的程序集或项目都不会包含在引用中:
我已经在这里碰到了一个完整的砖墙。我一直在寻找天在网上,我发现了一堆东西,看上去就像他们也许会有帮助,但让我失望的死角:
- https://github.com/dittodhole/powershell-nuget-packager
- Build NuGet Package automatically including referenced dependencies
- NuGet Packaging and referencing dll's
- Why doesn't nuget include the referenced project when packing?
我在哪里错了?
更新 在.net451文件夹中,它添加了所有外部项目引用。正如你可以在WebApplication截图中看到的那样,这些引用也不会被添加。 http://blabberjax.com/uploads/net451%20folder.JPG
什么是.nupkg中的lib \ net451文件夹?我猜组件应该在那里,但你的.nuspec把它们放在lib目录中。我猜想NuGet会找到lib \ net451目录并忽略父lib目录中的程序集。如果将引用lib \ net451文件夹中的所有程序集,则您也不需要参考部分。如果您正在使用nuget pack .csproj,那么您可以从.nuspec中删除文件部分。 –
嘿@MattWard,项目引用将进入该文件夹,但它们也不会被添加为创建的子项目中的引用。任何其他的想法可能会让孩子的项目把它们当作参考吗? 此外,我试图改变目标=“lib \ net451”文件路径,它仍然无法正常工作。 – pharophy