Nuget 包 - 引用的程序集未作为项目引用包含在内

Nuget Package - Referenced Assemblies Are Not Being Included As Project References

在进入问题之前,让我快速解释一下我的目标:

我有一个用于我构建的每个网站的模板项目,其中包括基础 类、通用页面(例如联系我们)、有用的实用程序(异常日志记录)等。我想制作该模板可重复使用和更新。以前我使用的是 Visual Studio 项目模板,但我在引用我需要的所有程序集时遇到问题,所以我求助于 Nuget。我的印象是这会更容易,并且还会为我提供额外的好处。

问题:

我不知道如何创建一个 nuget 包,它将在包中包含所有引用(解决方案中的其他项目和我本地计算机上的 dll),并使它们成为安装的子项目中的依赖项这个模板。

这是我的进度:

一个。在项目的 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 应用程序并安装此包,这些引用的程序集或项目中的 none 将包含在引用下:

d。在 Visual Studio 的新(子)项目中:

我在这里碰壁了。我已经在网上搜索了好几天,我发现了一堆看起来可能有用的东西,但让我陷入了死胡同:

我哪里错了?

更新 在 .net451 文件夹中,它添加了所有外部项目引用。正如您在 WebApplication 屏幕截图中所见,这些引用也未添加。
(来源:blabberjax.com

好的,所以在尝试了几乎所有的事情之后,我认为这个问题与我将主项目、Nuget 包和子项目命名为相同的名称有关 -(例如 MyProject.csproj & package MyProject.#.#.#).

看起来子项目的 .csproj 文件中的引用可能已被 Nuget 包中的 MyProject.csproj 文件覆盖,该文件具有本地 ../ 引用。所以我将 nuspec 中的 Nuget 包的 id 重命名为 <id>$id$.Client</id>,然后一切开始工作。