首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBC致命错误BC2000:项目已经对程序集具有引用。

VBC致命错误BC2000:项目已经对程序集具有引用。
EN

Stack Overflow用户
提问于 2016-01-18 21:18:21
回答 1查看 1.3K关注 0票数 2

我研究这个问题已经有几天了,没有人回答。有对错误代码的引用,但我认为BC2000用于所有“编译器初始化”错误,而不管底层问题如何。

我有一个VS解决方案,它在MSBuild 12.0的开发环境中编译得很好。但是,在我们的Win 2008 R2 SP1编译机器中使用MSBuild 12.0编译时,会出现致命错误。

正在为MSBuild执行的命令是:

代码语言:javascript
复制
"C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe" "path\to\solution.sln" /target:Clean;Build /verbosity:normal /toolsversion:12.0 /nologo /property:WarningLevel="2" /property:Configuration="Release"

收到的错误是:

代码语言:javascript
复制
vbc: Error: Fatal error BC2000 : compiler initialization failed unexpectedly: Project already has a reference to assembly Microsoft.VisualBasic. A second reference to 'path\to\dotnet4\System.dll' cannot be added. (Fatal error BC2000)

这与this question类似。然而,我们没有设置他们的使用,因为我们没有使用Mono。

所讨论的项目只有一个引用Microsoft.VisualBasic程序集。而且,正在执行的vbc命令在dev和build机器中类似,它们只引用过一次所提到的程序集。

开发和构建机器也是如此:

  • .NET框架版本: 4.6.1
  • 正在使用的MSBuild : 12.0

不同之处:

  • 开发机器要么是2010年,要么是2013年。
  • 生成机器没有安装VS。
  • Build机还安装了MS Visual C++ Build Tools 2015。

以前有人见过这个问题吗?有什么解决办法吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-20 20:16:06

在dev机器中运行构建时,我检查了vbc命令(很大,所以我不会发布),它在下面的文件夹中链接到Microsoft.VisualBasic.dll:

代码语言:javascript
复制
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0

我注意到这个文件夹在构建机器中不可用,因为它没有.Net Framework4SDK。因此,我安装了“7和.NET Framework4”(是的,尽管构建机器为Win 2008 R2)并且它工作了。

现在,要安装该SDK,我必须首先卸载.Net框架,因为它是一个较新的版本,然后安装.Net Framework4,然后安装上述SDK,然后再更新到.Net Framework4.6.1。

因此,总括而言:

  1. 在生成机器中执行MSBuild并将输出重定向到日志文件
  2. 打开日志文件并检查失败的vbc命令。
  3. 在dev机器中执行MSBuild并将输出重定向到日志文件
  4. 打开日志文件并找到步骤2中标识的命令。
  5. 检查所讨论的程序集(来自错误)的位置。
  6. 如果它是一个类似于我在开头所说的目录,那么您可能需要为上述版本的.Net框架安装SDK。在我的例子中,这个目录有v4.0,所以它适用于.Net FW4.0。

希望这能帮到其他人。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34864258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档