2011-11-22 39 views
0

我有一个基本的MSBuild脚本,其中包括一个项目编译/构建步骤。看起来像这样:MSBuild工作在调试模式,但不是发布模式 - 另一个有趣的anamoly

.... 
    <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重新添加到文件中。

我难倒。有任何想法吗?

回答

0

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

检查您的csproj文件是否包含正确的项目引用到其他项目。例如,如果Project2的取决于PROJECT1:

project2.csproj:

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

当项目是PROJECT1的ProjectGuid(来自project1.csproj)

相关问题