【问题标题】:msbuild works on command line but VS2010 says a project is "not selected"msbuild 在命令行上工作,但 VS2010 说项目“未选中”
【发布时间】:2011-03-22 18:56:00
【问题描述】:

此问题的相关解决方案和项目文件位于:

http://code.google.com/p/benfwaves/source/browse/trunk/BenfWaves.sln?r=26

http://code.google.com/p/benfwaves/source/browse/trunk/BenfWaves.Library/BenfWaves.Library.csproj?r=26

http://code.google.com/p/benfwaves/source/browse/trunk/BenfWaves.Client/BenfWaves.Client.csproj?r=26

http://code.google.com/p/benfwaves/source/browse/trunk/BenfWaves.Tests/BenfWaves.Tests.csproj?r=26

我尝试重构项目文件以消除冗余并允许编译为 .NET 3.5 和 .NET 4.0。目前,VS2010 IDE 可以为 .NET 4.0 上的任何 CPU 编译。如果我尝试 .NET 3.5 的任何 CPU,它会说:

错误 1 ​​无法加载文件或程序集“System.Drawing,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。该系统找不到指定的文件。第 123 行,位置 5。D:\projects\BenfWaves\trunk\BenfWaves.Client\Properties\Resources.resx 123 5 BenfWaves.Client

我了解到这可能是 resgen.exe 的问题,但是更改该文件上的 32 位标志并没有改善这种情况。此外,IDE 不认为项目具有任何 CPU 以外的配置,这会产生以下问题:

------ Skipped Build: Project: BenfWaves.Library, Configuration: Debug-4.0 Any CPU ------
           Project not selected to build for this solution configuration
------ Build started: Project: BenfWaves.Client, Configuration: Debug-4.0 x86 ------
           BenfWaves.Client -> D:\projects\BenfWaves\trunk\BenfWaves.Client\bin\x86\Debug-4.0\BenfWaves.Client.exe
------ Skipped Build: Project: BenfWaves.Tests, Configuration: Debug-4.0 Any CPU ------
           Project not selected to build for this solution configuration
========== Build: 1 succeeded or up-to-date, 0 failed, 2 skipped ==========

它跳过了不该跳过的东西。命令行中的 msbuild 适用于所有三个平台,并且不会跳过任何内容。

非常欢迎任何建议。谢谢。

编辑:在 27 版之后,至少“未选择”问题不再存在,因为我在项目中添加了虚拟配置行以欺骗 VS2010 使其正常工作。但是.NET 3.5下的资源编译问题依然存在。

【问题讨论】:

    标签: c# visual-studio-2010 msbuild


    【解决方案1】:
    • 在解决方案资源管理器中,右键单击解决方案
    • 然后转到配置管理器
    • 确保每次都检查您要构建的项目的构建列。

    【讨论】:

      【解决方案2】:

      尝试确保 $(Configuration) 和 $(Platform) 都具有默认值,方法是将这些行放在您的第一个 PropertyGroup 中...

      <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
      <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
      

      这可能是相关的,因为 IDE 以特殊方式处理这些属性,如果在加载项目时它们没有值,可能会感到困惑。

      【讨论】:

      • 很好的建议,但实际上是在这里:code.google.com/p/benfwaves/source/browse/trunk/… 从第 21 行到第 32 行。
      • 这个解决方案帮助了我。我从命令行运行 msbuild,并且配置和平台参数都默认为在我的情况下不起作用的东西。通过明确指定两个参数对我有用,例如:msbuild.exe MyApp.sln /p:Configuration=Debug /p:Platform=Win32
      【解决方案3】:

      我看到您已经修复了 sln 中的配置错误。 Resx 问题与here 描述的相同。

      【讨论】:

        【解决方案4】:

        您可能想尝试编辑解决方案构建配置。

        http://msdn.microsoft.com/en-us/library/kwybya3w.aspx

        按照“选择和编辑解决方案构建配置”标题下的说明进行操作

        【讨论】:

        • 问题是 GUI 解决方案构建配置缺少条目。我解决了这个特定问题(请参阅更新的问题文本),但在 .NET 3.5 中仍然没有编译。
        猜你喜欢
        • 2018-12-25
        • 2014-01-31
        • 2011-05-30
        • 1970-01-01
        • 2017-09-24
        • 1970-01-01
        • 2015-10-04
        • 2012-11-28
        • 2016-09-09
        相关资源
        最近更新 更多