【问题标题】:VS2010 compiles solution without errors, msbuild fails: "fatal error CS0002: Unable to load message string from resources"VS2010编译解决方案没有错误,msbuild失败:“fatal error CS0002: Unable to load message string from resources”
【发布时间】:2012-03-24 15:40:51
【问题描述】:

我在查找此错误消息的原因时遇到了很多麻烦。我有一个大型 Visual Studio 2010 解决方案,它在我的本地机器上编译时没有错误,但在构建服务器上,msbuild 在其中一个项目上失败并出现错误:

致命错误 CS0002:无法从资源加载消息字符串

这是最后的红色错误部分:

Build FAILED.

"C:\TeamCity\buildAgent\work\85eff164854b9e67\Libraries\Domainface.Proxy.Common\Domainface.Proxy.Common.csproj" (default target) (9) ->
(CoreCompile target) -> 
  CSC : fatal error CS0002: Unable to load message string from resources. [C:\TeamCity\buildAgent\work\85eff164854b9e67\Libraries\Domainface.Proxy.Common\Domainface.Proxy.Common.csproj]

    0 Warning(s)
    1 Error(s)

构建服务器的整个 msbuild 输出在这里:http://pastie.org/3660842

这个错误通常指的是什么,这会导致它在本地构建而不是在构建服务器上?

更新

我刚刚在两台机器上运行了msbuild /version,结果发现.net 框架版本略有不同。本地机器是4.0.30319.488,构建服务器是4.0.30319.1。我即将在服务器上运行 windows update 以允许它安装一些更新,因为其中一些似乎与 .net 框架相关,所以我会看看这是否会有所不同。

更新

安装更新没有帮助。只记得我刚才从异步预览中复制了 csc.exe 以促进异步编译(实际的异步预览由于 Visual Studio 不存在而未能安装在服务器上,但安装 Visual Studio Team Viewer 似乎已经解决了这个问题,所以我刚刚运行了正确的 async ctp3 安装程序,看看是否有什么不同。

【问题讨论】:

  • 呃,等等,你是说你设法欺骗了 CTP 安装程序,现在你很难解释问题,你不知道为什么?
  • 好吧,它似乎成功了。显然只是覆盖 csc.exe 是一个糟糕的举动,一定会导致这个问题。

标签: c# visual-studio-2010 msbuild compiler-errors


【解决方案1】:

CS0002 未记录在案。在解释错误消息时,我会说编译器试图向您显示编译错误消息,但在尝试检索消息文本时失败。有点奇怪的是它的资源中实际上并没有字符串表,不确定它来自哪里。

嗯,有些事情很糟糕。您更新 .NET 框架版本的想法是可靠的,这也将更新 csc.exe。应该足以修复任何损坏。

【讨论】:

    【解决方案2】:

    这通常是the Entity Framework designer's handling of your connection strings 的问题。在您的 app.config 文件中,确保程序集和资源名称是应有的名称。

    这是连接字符串特定部分的格式:

    Metadata= res://<assemblyFullName>/<resourceName>
    

    【讨论】:

      【解决方案3】:

      好的,根据我自己尝试解决问题的经验,以及 Hans 的回答和我在谷歌搜索时挖掘的其他一些讨论,我猜想使这个错误发生的唯一方法是有一个问题与当前的 .Net 框架安装状态。本质上,编译器与其使用的其他资源不匹配意味着当编译器遇到错误时,它会尝试从引用的资源中提取错误消息,但由于资源与编译器构建不匹配,因此错误消息不可用而是编译器报告它无法加载消息(因此无法有效地显示正确的错误消息)。

      因此修复是修复 .Net 框架安装,可以通过重新安装、对其运行修复或安装更新版本(在我的情况下是异步 ctp,虽然不是完整的 . net framework 版本升级,足以纠正编译器使用的任何不匹配的资源引用)。

      【讨论】:

        猜你喜欢
        • 2022-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-14
        • 2011-05-08
        • 1970-01-01
        • 1970-01-01
        • 2017-05-22
        相关资源
        最近更新 更多