在我解决问题之前,让我快速解释一下我的目标:
我有一个模板项目,我用于我构建的每个网站,包括基类,常用页面(例如联系我们),有用的实用程序(异常日志记录)等。我想使这个模板可重用和可更新。以前我使用的是Visual Studio项目模板,但是在引用我需要的所有程序集时遇到了问题,所以我转向Nuget。我的印象是这会更容易,也为我提供额外的好处。
问题:
我无法弄清楚如何在包中创建包含所有引用(解决方案中的其他项目和本地计算机上的dll)的nuget包,并在安装的子项目中使它们成为依赖项这个模板。
这是我走了多远:
一个。在项目的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>
湾当我运行pack命令时,我使用它:nuget pack {projectname} .csproj - IncludeReferencedProjects -Symbols
℃。输出是两个独立的项目,一个是.symbols,另一个没有,在Package Explorer中看起来像这样:
所以在这一点上,感觉我做的一切都是正确的。但是,一旦我在Visual Studio中创建一个新的空Web应用程序,并安装此包,这些引用的程序集或项目都不包含在引用中:
我在这里打了一堵完整的砖墙。我已经在网上搜索了好几天了,我发现了一堆看起来可能会有所帮助的东西,但却让我陷入了死胡同:
我哪里错了?
更新 在.net451文件夹中,它添加了所有外部项目引用。正如您在WebApplication截图中看到的那样,这些引用也没有被添加。 http://blabberjax.com/uploads/net451%20folder.JPG
答案 0 :(得分:0)
好吧,所以在尝试了阳光下的所有事情后,我认为这个问题与我命名的主项目,Nuget包和子项目的名称相同 - (例如MyProject.csproj&amp; package MyProject 。#。#。#)。
看起来这些引用可能已被来自Nuget包的MyProject.csproj文件覆盖在子项目的.csproj文件中,该文件具有本地../引用。所以我在nuspec中重命名了Nuget包的id
<id>$id$.Client</id>
,然后一切都开始了。