2015-05-09 51 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