2013-05-18 28 views
1

我在建立一個合併DLL以在Windows 8機器上以.net4.0爲目標的一些問題。我可以成功地建立在VS2012個人.net4.0的DLL,所以我就沒有這個問題:使用Windows 8/VS2012時的目標.Net 4.0

Targeting .NET 4.0 in VS 2012 on Windows 8

我所遇到下列優秀的博客帖子裏面討論我的問題:

http://www.mattwrock.com/post/2012/02/29/What-you-should-know-about-running-ILMerge-on-Net-45-Beta-assemblies-targeting-Net-40.aspx

也:

Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'mscorlib

這SUG gests我在合併過程中使用以下語法:

/targetplatform:"v4,C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" 

不幸的是在Windows 8中我沒有這個目錄。我可以考慮以下可能的解決方案,但有興趣知道是否有人已經解決了這個問題。

  1. 將.net 4.0程序集從Windows 7機器手動複製到上述目錄中。
  2. 找到VS2012正在使用的.net 4.0程序集並引用它們。
  3. ??
+0

這當然是因爲你從未在該機器上安裝過.NET 4.0。帶有VS2012的Windows 8機器只有.NET 4.5。因此,您應該只構建以4.5爲目標的項目。這也自動解決了這個問題。 –

+0

@HansPassant - 您說得很好,但我仍然需要爲.net2.0 +系統創建程序集。這對於.net2.0和.net3來說不是問題。5那些在Windows 8中可用的問題出現在.net4.0中。 – MarcF

回答

1

非常感謝您的意見和反饋。一個工作(哈克)解決方案是做到以下幾點:

  1. 在windows 8,C:\Program Files\Reference Assemblies\Microsoft\Framework\v4.0上創建一個新的目錄。
  2. 轉到一個窗口7機,其不具有安裝.net4.5,並複製該文件夾C:\Windows\Microsoft.NET\Framework\v4.0.30319
  3. 的內容從第2步中的文件粘貼到在步驟創建的文件夾1

當時我能夠用正確引用在Windows 8的.net4.0組件如下:

/targetplatform:"v4,C:\Program Files\Reference Assemblies\Microsoft\Framework\v4.0" 

測試作爲工作正常。

+0

你的其他選擇是安裝VS2k10。 – user7116

+0

@sixlettervariables - 我從一開始就安裝了VS2010,沒有幫助。 – MarcF

+0

它爲我添加它,你必須有一個奇怪的配置。您是否使用Express版本? – user7116

1

我也使用Windows 8和VS 2012,但沒有遇到過這個問題(當然,其他一些人也很好)。很簡單,它可能只是你已經安裝了v3.5或v4.5,這意味着你需要安裝v4.0框架(如果你已經嘗試過了......)。

我還發現你給的文件夾路徑沒有把我帶到我的電腦上的任何地方,但是這條路徑確實如此;

C:\Program Files\Reference Assemblies\Microsoft\Framework\ 

你可以嘗試在PC上這條道路,並查看是否有一個4.0版的文件夾在那裏。

+0

我的目錄是「C:\ Program Files \ Reference Assemblies \ Microsoft \ Framework \」,但我只有v3.0,v3.5。 – MarcF

+0

你可以試試@'C:\ Program Files \ Reference Assemblies \ Microsoft \ VSTO40 \ v4.0.Framework'嗎? –

+0

@Ronak - 該目錄確實存在,但只包含Microsoft.Office ...和Microsoft.VisualStudio ...程序集。 – MarcF