【问题标题】:MSBuild working in debug mode, but not release mode - and another interesting anamolyMSBuild 在调试模式下工作,但不是发布模式 - 以及其他有趣的异常
【发布时间】:2011-11-22 17:24:36
【问题描述】:

我有一个基本的 MSBuild 脚本,其中包含一个项目编译/构建步骤。看起来像这样:

....
    <ItemGroup>
    <ProjectReferences Include="loc1\Project1.csproj"/> 
    <ProjectReferences Include="loc2\Project2.csproj"/>
    <ProjectReferences Include="loc3\Project3.csproj"/>         
</ItemGroup>
....
    <Target Name="BuildProjects">
    <Message Text="Beginning main project build"/>
    <MSBuild Projects="@(ProjectReferences)" Targets="Build" Properties="Configuration=$(Configuration);ProjectBuild=$(ProjectBuild);AppDir=$(AppDir)">
        <Output TaskParameter="TargetOutputs" ItemName="AssembliesBuilt"/>
    </MSBuild>      
    <!--<CallTarget Targets="BuildToolkit"/>-->
</Target>

Project3.csproj 是一个 .NET 3.5 Web 服务项目。配置在命令行中传递。

首先是 System.Linq 无法解决的问题;我通过直接在项目文件中创建对System.Core 的引用来解决此问题(显然这种情况经常发生,需要进行此修复)。

现在,当我在调试模式下构建这个项目时,一切都很好。但是,当尝试在发布模式下构建时,它会像这样失败,其中可能会出现与各种程序集有关的这些消息:

Considered "c:\Program Files (x86)\Reference Assemblies\Microsoft\VST040\v8.0\MyReferencedProjectAssembly.dll", but it didn't exist.

对于许多引用,这种情况会发生多次。奇怪的是,发生这种情况后,我切换回调试模式,并且在发布模式发生后它无法再次构建。我必须从 MSBuild 文件中删除有问题的 Project3,再次运行(可行),然后将有问题的 Project3 重新添加回文件中,然后它才能在调试模式下再次工作。

我被难住了。有什么想法吗?

【问题讨论】:

    标签: msbuild release mode


    【解决方案1】:

    在我看来,您的项目引用设置不正确。您的项目是以错误的构建顺序构建的,并且“有时”构建失败。我猜它与调试/发布模式无关。

    检查您的 csproj 文件是否包含对其他项目的正确项目引用。例如,如果 Project2 依赖于 Project1:

    project2.csproj:

    <ProjectReference Include="..\loc1\Project1.csproj">
      <Project>{79FB10A6-6CD9-46D4-9463-319B8CBD82FE}</Project>
      <Name>Project1</Name>
    </ProjectReference>
    

    Project 是 project1 的 ProjectGuid(来自 project1.csproj)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 2012-01-31
      相关资源
      最近更新 更多