2011-11-22 8 views
0

У меня есть базовый скрипт MSBuild, который включает в себя шаг для компиляции/сборки проекта. Похоже, это: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 веб-служб. Конфигурация передается в командной строке.

Во-первых, проблема с System.Linq не была решена; Я исправил это, создав ссылку на System.Core непосредственно в файле проекта (видимо, это часто случается и требует этого исправления).

Теперь, когда я создаю этот проект в режиме отладки, все в порядке. Тем не менее, при попытке построить в режиме выпуска, он не так, с мая этих сообщений, касающихся всех видов сборок:

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

Это происходит много раз в течение нескольких ссылок. Как ни странно, после этого я переключусь обратно в режим отладки, и он не сможет построить снова после того, как произойдет режим выпуска. Я должен удалить оскорбительный Project3 из файла MSBuild, снова запустить (что работает) и снова добавить оскорбительный Project3 обратно в файл, прежде чем он снова будет работать в режиме отладки.

Я в тупике. Есть идеи?

ответ

0

Мне кажется, что ваши проектные ссылки настроены неправильно. Ваши проекты строят неправильный порядок сборки, а сборка «иногда» не выполняется. Думаю, это не имеет никакого отношения к режиму отладки/выпуска.

Проверьте файлы csproj, если они содержат правильные ссылки на проекты других проектов. Например, если Проект2 зависит от Проект1:

project2.csproj:

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

Где Проект ProjectGuid из project1 (от project1.csproj)