Конфигурация проекта по условию?
Только что нашел убойную фигню в мелкомягковских проектах...
Имеем Проект со ссылками на другие Проекты.
Для тестирования Я решил строить по ОДНОМУ проекту за раз.
По одному означает что будет строится только один Проект - все остальные должны быть уже откомпилированы и представлены в виде дллок.
Системка получилась не самая простая, но результатами Я был доволен - все работало именно так как мне хотелось.
По случаю - ошибся с путями к готовым дллкам. НО! Все продолжало функционировать!!!
Все, кроме одного проекта. В нем имя сборки не совпадало с именем проекта и никак не ресолвилось.
Т.е. если есть проект вид:
<?xml version="1.0" encoding="utf-8"?><PropertyGroup><Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration><Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform><ProjectGuid>{E92D6467-35A4-4BAC-804F-1599D7E050FF}</ProjectGuid><OutputType>Library</OutputType><AppDesignerFolder>Properties</AppDesignerFolder><RootNamespace>Olympic.Misk.Tests</RootNamespace><AssemblyName>Olympic.Misk.Tests</AssemblyName><TargetFrameworkVersion>v4.0</TargetFrameworkVersion><FileAlignment>512</FileAlignment><ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids><VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion><VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath><ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath><IsCodedUITest>False</IsCodedUITest><TestProjectType>UnitTest</TestProjectType></PropertyGroup><PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "><DebugSymbols>true</DebugSymbols><DebugType>full</DebugType><Optimize>false</Optimize><OutputPath>..\..\Bin\$(Configuration)\</OutputPath><DefineConstants>DEBUG;TRACE</DefineConstants><ErrorReport>prompt</ErrorReport><WarningLevel>4</WarningLevel></PropertyGroup><PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Tests|AnyCPU' "><DebugSymbols>true</DebugSymbols><DebugType>full</DebugType><Optimize>false</Optimize><OutputPath>..\..\Bin\$(Configuration)\</OutputPath><DefineConstants>DEBUG;TRACE</DefineConstants><ErrorReport>prompt</ErrorReport><WarningLevel>4</WarningLevel></PropertyGroup><PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "><DebugType>pdbonly</DebugType><Optimize>true</Optimize><OutputPath>..\..\Bin\$(Configuration)\</OutputPath><DefineConstants>TRACE</DefineConstants><ErrorReport>prompt</ErrorReport><WarningLevel>4</WarningLevel></PropertyGroup><ItemGroup><Reference Include="System" /><Reference Include="System.Core"><RequiredTargetFramework>3.5</RequiredTargetFramework></Reference><Reference Include="System.Data" /><Reference Include="System.XML" /></ItemGroup><Choose><When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'"><ItemGroup><Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" /></ItemGroup></When><Otherwise><ItemGroup><Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework" /></ItemGroup></Otherwise></Choose>
<ItemGroup><None Include="Properties\App.config" /></ItemGroup><Choose><When Condition=" '$(CCNetBuildId)' == '' "><ItemGroup>[red] <ProjectReference Include="..\Olympic.Misk\Olympic.Misk.csproj"> [/red]
<Project>{cd9513ad-87a5-447c-8a82-a5282d048ffe}</Project><Name>Olympic.Misk</Name></ProjectReference></ItemGroup></When><Otherwise><ItemGroup><Reference Include="Olympic.Misk"><SpecificVersion>False</SpecificVersion>[red] <HintPath>..\..\Bin\$(Configuration)\Olympic.Misk.dll</HintPath> [/red]
<Private>False</Private></Reference></ItemGroup></Otherwise></Choose><Choose><When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'"><ItemGroup><Reference Include="Microsoft.VisualStudio.QualityTools.CodedUITestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"><Private>False</Private></Reference><Reference Include="Microsoft.VisualStudio.TestTools.UITest.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"><Private>False</Private></Reference><Reference Include="Microsoft.VisualStudio.TestTools.UITest.Extension, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"><Private>False</Private></Reference><Reference Include="Microsoft.VisualStudio.TestTools.UITesting, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"><Private>False</Private></Reference></ItemGroup></When></Choose><Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" /><Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /><!-- To modify your build process, add your task inside one of the targets below and uncomment it.Other similar extension points exist, see Microsoft.Common.targets.<Target Name="BeforeBuild"></Target><Target Name="AfterBuild"></Target>--></Project>
Где в варианте с '$(CCNetBuildId)' != '' собрка лежала в другом месте, проект все одно строился.
Т.е. при отсутствии конкретно указанной сборки - выбирается та, которая лежит в obj неактивного Проекта...
Писсец полный - билли напрочь игнорит условия билda...