MSBuild在调试模式下工作,而不是在发布模式下工作——这是另一个有趣的问题

MSBuild在调试模式下工作,而不是在发布模式下工作——这是另一个有趣的问题,msbuild,release,mode,Msbuild,Release,Mode,我有一个基本的MSBuild脚本,其中包括项目编译/生成的步骤。看起来像这样: .... <ItemGroup> <ProjectReferences Include="loc1\Project1.csproj"/> <ProjectReferences Include="loc2\Project2.csproj"/> <ProjectReferences Include="loc3\Project3.csproj"/&

我有一个基本的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
是一个.NET3.5Web服务项目。配置通过命令行传入

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

现在,当我在调试模式下构建这个项目时,一切都很好。但是,当尝试在发布模式下构建时,它会像这样失败,其中可能有以下消息涉及所有类型的程序集:

考虑了“c:\Program Files(x86)\Reference Assembly\Microsoft\VST040\v8.0\MyReferencedProjectAssembly.dll”,但它不存在。

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


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

在我看来,您的项目参考没有正确设置。您的项目以错误的生成顺序生成,“有时”生成失败。我想这与调试/发布模式无关

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

项目2.csproj:

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

{79FB10A6-6CD9-46D4-9463-319B8CBD82FE}
项目1
其中Project是project1的ProjectGuid(来自project1.csproj)