2015-05-09 24 views
0

我试图使用“Nuget包资源管理器”创建一个nuget。该项目引用2个dll巫女目标.net4.0和主dll目标.net4.5。创建nuget:无法打包引用的dll

作为指定,我把2倍中引用的DLL的文件夹中被称为“net40”,所谓的“net45”文件夹中的主DLL中的“LIB”文件夹内,然后我推的NuGet至极位于here

但是,当我尝试将它安装在另一个项目中,它不采取任何dll!

我做错了什么?

谢谢。

UPDATE:

的NuGet包包含:

lib (folder) 
    net45 (folder) 
     MainAssembly.dll -> targets .net_4.5 
     Microsoft.VisualStudio.TextTemplating.10.0 -> targets .net_4 
     Microsoft.VisualStudio.TextTemplating.Interfaces.10.0 -> targets .net_4 

笔记:

  • MainAssembly需要其他两个组件
  • 我只是想针对.NET版本4.5

问题:

使用上述不工作的结构,intalling在一个新的项目MainAssembly不添加引用列表中的NuGet当创建一个NuGet包,只有两个其他组件添加。

回答

0

该项目引用了2个dll女巫目标.net4.0和主dll目标.net4.5。

作为指定,我把2倍中引用的DLL的文件夹中被称为“net40”,所谓的“net45”文件夹中的主DLL中的“LIB”文件夹内,然后我推的NuGet至极位于here

NuGet包可以定位多个.NET框架版本。但是,.NET项目不能。

您的相关程序集必须放置在相同的.NET Framework版本文件夹中才能安装到目标项目中。所以,如果你希望你的NuGet包到目标4.0和4.5,结构应该是这样的:

lib 
    net40 
     MainAssembly.dll 
     DependentAssembly1.dll 
     DependentAssembly2.dll 
    net45 
     MainAssembly.dll 
     DependentAssembly1.dll 
     DependentAssembly2.dll 

各组的主要部件必须针对相同的框架版本的父文件夹。相关程序集可以定位与目标版本相同或更低的任何版本。

请注意,通常每个程序集都打包为独立的NuGet程序包,NuGet程序包彼此依赖,而不是将相关的程序集放入相同的程序包中。

+0

谢谢,我明白你的观点。但 现在,当我把所有的dll放在v45文件夹中时,它也可以工作,nuget将只抓取相关的程序集而不是主程序集。 – dafriskymonkey

+0

请注意,在我的情况下:mainassembly.dll目标4.5,以及两个depent程序集目标4.0。把他们都放在同一个4.5里似乎没有用。 – dafriskymonkey

+0

您的主要程序集必须以v4为目标。0(或更低)以便放入'net40'文件夹,否则它将无法安装到v4.0目标项目中。在'net45'文件夹中,它可以定位到v4.5。请参阅[本文](http://shazwazza.com/post/multi-targeting-a-single-net-project-to-build-for-different-framework-versions/),了解如何设置您的项目以构建多个.NET框架版本。请注意,您的问题不清楚您的目标项目(您将要安装此NuGet包的项目)的.NET框架版本是否正在使用,这是这些文件夹发挥作用的地方。 – NightOwl888