使用Windows 8 / VS2012时目标.Net 4.0

时间:2013-05-18 11:39:59

标签: c# .net ilmerge

我在Windows 8机器上构建一个合并的DLL来定位.net4.0时遇到了一些问题。我可以在VS2012中成功构建单独的.net4.0 dll,所以我没有这个问题:

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

表示我在合并期间使用以下语法:

/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. ...

2 个答案:

答案 0 :(得分:1)

我也在使用Windows 8和VS 2012,但没有遇到过这个问题(当然,其他一些人也很好)。很简单,可能只是安装了v3.5或v4.5,这意味着您需要安装v4.0框架(如果您已经尝试过,请再次安装)。

我还发现你提供的文件夹路径没有带我到我的电脑上,但是这条路径确实存在;

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

您可以在PC上尝试该路径,看看那里是否有v4.0文件夹。

答案 1 :(得分:1)

非常感谢您的评论和反馈。一个工作(hacky)解决方案是执行以下操作:

  1. 在Windows 8上创建一个新目录C:\Program Files\Reference Assemblies\Microsoft\Framework\v4.0
  2. 转到未安装.net4.5的Windows 7计算机,并复制文件夹C:\Windows\Microsoft.NET\Framework\v4.0.30319的内容
  3. 将步骤2中的文件粘贴到步骤1中创建的文件夹中。
  4. 然后我能够使用以下内容正确引用Windows 8中的.net4.0程序集:

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

    测试工作正常。