【问题标题】:Type inference failing (CS0246) compiling from MSBuild 3.5 but not Visual Studio从 MSBuild 3.5 但不是 Visual Studio 编译的类型推理失败 (CS0246)
【发布时间】:2011-07-25 19:21:50
【问题描述】:

在从命令行编译最近的一些更改时,我们在构建服务器上遇到了一个有趣的错误:

c:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe

错误 CS0246:找不到类型或命名空间名称“var”(您是否缺少 using 指令或程序集引用?)

有问题的代码:

var response = _producerErrors.CreateTextMessage(); 

_producerErrorsIMessageProducer 的类型,来自 Apache.NMS
responseITextMessage 的类型

请注意,它从 Visual Studio 成功编译,我可以从命令行本地重现错误,我认为这排除了构建服务器的配置问题。

修复当然是微不足道的,但它让我很难理解为什么编译只是从 MSBuild 命令行失败?有问题的项目还有其他 var 正在使用的关键字正在编译,所以我怀疑它可能与 Apache 程序集有关,但是什么?

【问题讨论】:

  • 您能描述一下您是如何解决这个问题的吗?
  • 修复将类型推断,var 关键字替换为实际类型 ITextMessage
  • 哦,微不足道。在不接触代码的情况下寻找更好的解决方案。无论如何,谢谢你的回答:)
  • 是的,微不足道的修复 ;-) 但对于类型推断失败的原因仍然是个谜。

标签: c# c#-3.0 type-inference apache-nms


【解决方案1】:

您完全确定您的 3.5 目录中没有 2.0 编译器吗?

【讨论】:

  • 是 - “有问题的项目有其他正在使用的 var 关键字正在编译”
【解决方案2】:

我在尝试创建面向多框架的 NuGet 包时遇到了类似的问题。将目标框架设置为 3.5 时,代码在 Visual Studio 2010 中编译良好,但未在命令行编译。经过一些实验,我找到了一个成功的命令行解决方案,尽管我并不完全清楚根本问题是什么。

供参考:

使用 4.0 引用成功编译程序集(通过 DotPeek 检查确认):

C:\BuildAgent\work\efbf25fbf21ee436>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe My.csproj /p:Configuration=Release;TargetFrameworkVersion=v4.0;ToolsVersion=4.0 /t:Rebuild

注意 MSBuild 输出:

Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.296]

使用 2.0/3.5 引用成功编译程序集(通过 DotPeek 检查确认):

C:\BuildAgent\work\efbf25fbf21ee436>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe My.csproj /p:Configuration=Release;TargetFrameworkVersion=v3.5;ToolsVersion=3.5 /t:Rebuild

注意 MSBuild 输出:

Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.296]

编译失败

C:\BuildAgent\work\efbf25fbf21ee436>C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe My.csproj /p:Configuration=Release;TargetFrameworkVersion=v3.5;ToolsVersion=3.5 /t:Rebuild

注意 MSBuild 输出:

Microsoft (R) Build Engine Version 3.5.30729.4926
[Microsoft .NET Framework, Version 2.0.50727.4984]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 2014-08-18
    相关资源
    最近更新 更多