VBC 致命错误 BC2000:项目已引用程序集
VBC Fatal error BC2000: Project already has a reference to assembly
我已经研究了几天这个问题没有答案。有对错误代码的引用,但我相信 BC2000 用于所有 "compiler initialization" 错误,无论潜在问题如何。
我有一个 VS 解决方案,它在我们的开发环境中使用 MSBuild 12.0 编译得很好。但是,当尝试使用 MSBuild 12.0 在我们的 Win 2008 R2 SP1 构建机器中进行编译时,我们会遇到致命错误。
正在为 MSBuild 执行的命令是:
"C:\Program Files (x86)\MSBuild.0\Bin\MSBuild.exe" "path\to\solution.sln" /target:Clean;Build /verbosity:normal /toolsversion:12.0 /nologo /property:WarningLevel="2" /property:Configuration="Release"
收到的错误是:
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 Framework 版本:4.6.1
- 正在使用的 MSBuild:12.0
不同:
- 开发机器有 VS 2010 或 VS 2013。
- 编译机没有安装VS
- Build 机器还安装了 MS Visual C++ Build Tools 2015。
以前有人遇到过这个问题吗?关于如何解决它的任何想法?谢谢
当运行在开发机器中构建时,我检查了vbc命令(巨大,所以我不会post)并且它在下面链接到Microsoft.VisualBasic.dll文件夹:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0
我注意到此文件夹在构建机器中不可用,因为它没有 .Net Framework 4 SDK。所以我安装了 "Microsoft Windows SDK for Windows 7 and .NET Framework 4"(是的,即使构建机器是 Win 2008 R2)并且它有效。
现在,要安装该 SDK,我必须先卸载 .Net Framework,因为它是较新的版本,然后安装 .Net Framework 4,然后安装上述 SDK,然后再次更新到 .Net Framework 4.6。 1.
所以,总结一下:
- 在构建机器中执行 MSBuild 并将输出重定向到日志文件
- 打开日志文件并检查失败的 vbc 命令
- 在开发机器中执行 MSBuild 并将输出重定向到日志文件
- 打开日志文件并找到在步骤 2 中识别的命令
- 检查有问题的程序集(来自错误)所在的位置
- 如果是和我开头说的类似的目录,那么可能你需要安装该版本的.Net Framework的SDK。在我的例子中,该目录有 v4.0,所以它适用于 .Net Fw 4.0。
希望这对其他人有帮助。
我已经研究了几天这个问题没有答案。有对错误代码的引用,但我相信 BC2000 用于所有 "compiler initialization" 错误,无论潜在问题如何。
我有一个 VS 解决方案,它在我们的开发环境中使用 MSBuild 12.0 编译得很好。但是,当尝试使用 MSBuild 12.0 在我们的 Win 2008 R2 SP1 构建机器中进行编译时,我们会遇到致命错误。
正在为 MSBuild 执行的命令是:
"C:\Program Files (x86)\MSBuild.0\Bin\MSBuild.exe" "path\to\solution.sln" /target:Clean;Build /verbosity:normal /toolsversion:12.0 /nologo /property:WarningLevel="2" /property:Configuration="Release"
收到的错误是:
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 Framework 版本:4.6.1
- 正在使用的 MSBuild:12.0
不同:
- 开发机器有 VS 2010 或 VS 2013。
- 编译机没有安装VS
- Build 机器还安装了 MS Visual C++ Build Tools 2015。
以前有人遇到过这个问题吗?关于如何解决它的任何想法?谢谢
当运行在开发机器中构建时,我检查了vbc命令(巨大,所以我不会post)并且它在下面链接到Microsoft.VisualBasic.dll文件夹:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0
我注意到此文件夹在构建机器中不可用,因为它没有 .Net Framework 4 SDK。所以我安装了 "Microsoft Windows SDK for Windows 7 and .NET Framework 4"(是的,即使构建机器是 Win 2008 R2)并且它有效。
现在,要安装该 SDK,我必须先卸载 .Net Framework,因为它是较新的版本,然后安装 .Net Framework 4,然后安装上述 SDK,然后再次更新到 .Net Framework 4.6。 1.
所以,总结一下:
- 在构建机器中执行 MSBuild 并将输出重定向到日志文件
- 打开日志文件并检查失败的 vbc 命令
- 在开发机器中执行 MSBuild 并将输出重定向到日志文件
- 打开日志文件并找到在步骤 2 中识别的命令
- 检查有问题的程序集(来自错误)所在的位置
- 如果是和我开头说的类似的目录,那么可能你需要安装该版本的.Net Framework的SDK。在我的例子中,该目录有 v4.0,所以它适用于 .Net Fw 4.0。
希望这对其他人有帮助。