Building Visual Studio project with different platforms via MSBuild

I have 3 projects with configuration:

  • Project A: Debug|AnyCPU, Release|AnyCPU
  • Project B: Debug|AnyCPU, Release|AnyCPU
  • Project C: Debug|x86, Debug|x64, Release|x86, Release|x64

Project C have B in dependencies and B have A in dependencies. (A <- B <- C)

I use *.bat file to build its from command line:

msbuild A.csproj /target:Build /property:Configuration=Debug;Platform=AnyCPU /verbosity:minimal
msbuild A.csproj /target:Build /property:Configuration=Release;Platform=AnyCPU /verbosity:minimal<br/>
msbuild B.csproj /target:Build /property:Configuration=Debug;Platform=AnyCPU /verbosity:minimal
msbuild B.csproj /target:Build /property:Configuration=Release;Platform=AnyCPU /verbosity:minimal
msbuild C.csproj /target:Build /property:Configuration=Debug;Platform=x86 /verbosity:minimal
msbuild C.csproj /target:Build /property:Configuration=Release;Platform=x86 /verbosity:minimal
msbuild C.csproj /target:Build /property:Configuration=Debug;Platform=x64 /verbosity:minimal
msbuild C.csproj /target:Build /property:Configuration=Release;Platform=x64 /verbosity:minimal

And recieve error:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(609,5): error : The OutputPath property is not set for project 'A.csproj'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='Debug' Platform='x86'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. [A.csproj] C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(609,5): error : The OutputPath property is not set for project 'B.csproj'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='Debug' Platform='x86'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. [B.csproj]

Answers


I found the solution for my problem. Use Choose element in *.csproj file for detect building via Visual Studio or via MSBuild and use Reference (instead of ProjectReference) for MSBuild.

<Choose>
  <When Condition="'$(BuildingInsideVisualStudio)' == 'true'">
    <ItemGroup>
      <ProjectReference Include="A.csproj">
        <Project>{AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA}</Project>
        <Name>A</Name>
        <Private>True</Private>
      </ProjectReference>
      <ProjectReference Include="B.csproj">
        <Project>{BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB}</Project>
        <Name>B</Name>
        <Private>True</Private>
      </ProjectReference>
    </ItemGroup>
  </When>
  <Otherwise>
    <ItemGroup>
      <Reference Include="A, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx, processorArchitecture=MSIL">
        <HintPath>A.dll</HintPath>
        <Private>True</Private>
      </Reference>
      <Reference Include="B, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx, processorArchitecture=MSIL">
        <HintPath>B.dll</HintPath>
        <Private>True</Private>
      </Reference>
    </ItemGroup>
  </Otherwise>
</Choose>

Need Your Help

Setting the SVN “execute” bit in a Subversion repository using TortiseSVN or command line SVN

svn version-control tortoisesvn

I've got an open-source app that is hosted at code.google.com. It is cross platform ( Linux / Windows / Mac ). I uploaded the code initially from a WinXP machine using TortiseSVN and it seems that ...

Problem with virsh commands

ide disk kvm hotplugging

I have been trying to use virsh attah-disk to attach a qcow2 file as additional storage source. The syntax i am using is (from internet):

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.