問題複数の構成を持っているのMSBuildを使用して、単一のプロジェクトのビルド -- c# フィールド と asp.net-mvc フィールド と msbuild フィールド 関連 問題

Issue Building a single project using msbuild that has multiple configurations












32
vote

問題

日本語

発行

私たちは、ソリューション内のconfig変換を使用しています。たとえば、次のデバッグ、テスト、ステージング、リリース しかし、これらの構成は、当社のMVCのプロジェクトで使用されています。すべてのライブラリは、唯一の私たちの図書館のみデバッグモード、またはリリースモードのいずれかで構築する必要があるため、より理にかなってDebugとReleaseを使用します。

コマンドラインから、単一のプロジェクトをビルドしようとすると、

問題が発生します。私は、私たちが私たちのテスト環境にチームシティーからビルドを展開し、自動化するためにこれを実行できるようにする必要があります。

私はこのように、単一のプロジェクトをビルドする

<事前> <コード> msbuild myproject.csproj /t:Build /P:Configuration=Test /P:Platform=AnyCPU /P:DeployOnBuild=True /P:DeployTarget=MSDeployPublish /P:MsDeployServiceUrl=https://SERVER:8172/MsDeploy.axd /P:AllowUntrustedCertificate=True /P:MSDeployPublishMethod=WMSvc /P:CreatePackageOnPublish=True /P:UserName=Username /P:Password=Passsword /P:DeployIisAppPath="IISAPPPATH"

次のエラー

<前> myproject.csproj」(ビルドターゲット)(1) - &GT。 "C: SRC myproject.csproj"(デフォルトターゲット)(18) - &GT。 C: WINDOWS Microsoft.NET Frameworkの v4.0.30319 Microsoft.Common.targets(483,9) :エラー:OutputPathプロパティがプロジェクトのsampleLibrary.csproj」のために設定されていません。 あなたがの有効な組み合わせを指定していることを確認してご確認ください このプロジェクトのための構成とプラットフォーム。設定=「テスト」 プラットフォーム= 'AnyCPU'。あなたがしようとしているため、このメッセージが表示されます ソリューションファイルなしでプロジェクトを構築し、指定されたAを持っています このプロジェクトのために存在していない非デフォルトのコンフィギュレーションまたはプラットフォーム。

私のsampleLibraryは、テストのための設定を持っていないので、私は、それが何を意味するか知っている、とsampleLibraryのマッピングは私の.slnファイル

に含まれることになります

質問

すべてのライブラリプロジェクトのためにこれらの構成を追加することなく、これを解決する方法はありますか?ここは醜いハックのようなにおいがします。

英語

Issue

We are using config transforms inside our solution. For example: Debug, Test, Staging, Release However, those configurations are only used on our MVC projects. all of the libraries only use Debug and Release, which makes more sense, because our libraries only need to be built in either debug mode, or release mode.

The issue arises when attempting to build a single project from the command line. I need to be able to do this in order to auto deploy our builds from TeamCity to our testing environment.

When I build the single project like this

msbuild myproject.csproj  /t:Build  /P:Configuration=Test  /P:Platform=AnyCPU  /P:DeployOnBuild=True  /P:DeployTarget=MSDeployPublish  /P:MsDeployServiceUrl=https://SERVER:8172/MsDeploy.axd  /P:AllowUntrustedCertificate=True  /P:MSDeployPublishMethod=WMSvc  /P:CreatePackageOnPublish=True  /P:UserName=Username  /P:Password=Passsword  /P:DeployIisAppPath="IISAPPPATH" 

I get the following error

 myproject.csproj" (Build target) (1) -> "C:srcmyproject.csproj" (default target) (18) ->   c:WindowsMicrosoft.NETFrameworkv4.0.30319Microsoft.Common.targets(483,9) : error : The OutputPath property is not set for project 'sampleLibrary.csproj'.   Please check to make sure that you have specified a valid combination of  Configuration and Platform for this project.  Configuration='Test'   Platform='AnyCPU'.  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. 

I know what it means, because my sampleLibrary does not have a configuration for test, and the mapping for the sampleLibrary would be contained in my .sln file

Question

Is there a way to resolve this without having to add those configurations for every library project? It smells like an ugly hack here.

</div
        
 
 

回答リスト

7
 
vote
vote
ベストアンサー
 

残念ながら、ソリューションで使用されるすべてのプロジェクトを同じビルドパスに変更する必要があります。

しかし、これはあなたのプロジェクトがすべての構成に関係なく同じパスに構築された場合、これはかなり簡単なことです。プロジェクトのプロパティ ' Build タブで、 All Configurations を選択します。 Configuration ドロップダウンから、<コード> Output path を変更します。

これは、まだ存在していないプロジェクトファイル内のすべての構成のエントリを作成し、すべての構成に対して同じ出力パスを設定します。

 

Unfortunately, you will have to modify every project that is used in the solution to have the same build path.

However, this is a pretty easy thing to do if your projects all build to the same path regardless of configuration: in the project properties' Build tab, select All Configurations from the Configuration dropdown and then change the Output path.

This will create entries for all of the configurations in the project file that do not already existing and set the same output path for all configurations.

</div
 
 
12
 
vote

スイッチ/プロパティ<コード> /p:OutputPath=Test を設定します。それはTestという名前のディレクトリにDLLを出力します(私もTeamCity変数を使用することができる)。 同様の質問/回答へのリンク https://stackoverflow.com/a/1083362/90033

 

Would setting the switch/property /p:OutputPath=Test work for you? It would output the dlls in a directory called Test (I guees you also could use TeamCity variables). Link to similar question/answer https://stackoverflow.com/a/1083362/90033

</div
 
 
 
 
8
 
vote

TFS ONLINEを使用しても同じエラーが発生しました、これは私の問題を修正しました

画像の説明を入力します。ここで

 

Using the tfs online I got the same error, this fixed my problem

enter image description here

</div
 
 
 
 
3
 
vote

リリースのさまざまな値の場合は、ある異なる設定の場合は、

例えば

<事前> <コード> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' Or '$(Configuration)|$(Platform)' == 'Test|AnyCPU'"> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>binRelease</OutputPath> <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup>
 

Put an OR condition for the different values on Release for as many different configurations that you have.

eg.

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' Or '$(Configuration)|$(Platform)' == 'Test|AnyCPU'">     <DebugType>pdbonly</DebugType>     <Optimize>true</Optimize>     <OutputPath>binRelease</OutputPath>     <DefineConstants>TRACE</DefineConstants>     <ErrorReport>prompt</ErrorReport>     <WarningLevel>4</WarningLevel>   </PropertyGroup> 
</div
 
 
2
 
vote

1つの簡単な解決策は、「deploymentConfiguration」というプロジェクトに新しいプロパティを追加し、設定間のマッピングを実行します。例:

<事前> <コード> <!-- this is your non-deployment DLL --> <!-- Default DeploymentConfiguration to 'Debug' --> <DeploymentConfiguration Condition="'$(DeploymentConfiguration)'==''">Debug</DeploymentConfiguartion> <Configuration Condition='$(DeploymentConfiguration)'=='Test'">Debug</Configuration>

あなたのMSBuild呼び出しで、

を渡します <事前> <コード> /p:DeploymentConfiguration=Test

展開でMVCでは、直接構成を介してDeploymentConfigurationを割り当てるだけです。

 

One simple solution would be to add a new property to your projects called "DeploymentConfiguration" and have it do the mapping between configs. Example:

  <!-- this is your non-deployment DLL -->   <!-- Default DeploymentConfiguration to 'Debug' -->  <DeploymentConfiguration Condition="'$(DeploymentConfiguration)'==''">Debug</DeploymentConfiguartion>  <Configuration Condition='$(DeploymentConfiguration)'=='Test'">Debug</Configuration> 

Then in your MSBuild invocation, pass in

 /p:DeploymentConfiguration=Test 

In your deployment MVC you'd just assign DeploymentConfiguration through to Configuration directly.

</div
 
 

関連する質問

18  CRUISecontrol.net、MSBuild、/ P:outputPathとccnetartifactDirectory  ( Cruisecontrol net msbuild poutputpath and ccnetartifactdirectory ) 
現時点でcruisecontrol.netを設定しようとしています。これまでのところうまくいきますが、MSBuildタスクに問題があります。 ドキュメントに従って、CCNetartifactDirectoryをMSBuildに渡します。しかし、どのようにそれを...

7  MSBuildを介してコンパイラにパラメータを渡すにはどうすればよいですか。  ( How can i pass a parameter through msbuild to the compiler ) 
以下の行を使用してMSBuildをビルドするためにDelphi 2010 GroupProj: <事前> <コード> MSBuild C:srcmyprojgroup.groupproj /target:Build /p:config=Release ...

1  MSBuildで希望の宛先にZipフォルダを作成するように与えるコマンド  ( Command which gives to create a zip folder to desired destination in msbuild ) 
msbuildで目的の宛先にzipフォルダを作成するように与えるコマンドを望みます。 緊急に手伝ってください。 私の質問を明確にするため: このZIPタスクを含める必要があります。私のビルドには、開発者がコードを引っ張って構築することができます、私は彼の...

6  TFS 2010上のビルドと依存関係の解決に関する問題  ( Problems with builds on tfs 2010 and resolving dependencies ) 
私のマシン(およびプロダクションサーバー)に大きく機能するプロジェクトがあります。 それはC#3.5を実行しているVS2010プロジェクトです。 私のビルドサーバーにソリューションを構築するとき、それは私のサードパーティのDLLのカップルを解決することはできま...

0  Silverlight SolutionはVS2008で構築しますが、MSBuildで失敗します  ( Silverlight solution builds in vs2008 but fails with msbuild ) 
私はビルドスクリプトを作成したいSilverlightソリューションを持っています。こののように見える簡単なスクリプトがあります <事前> <コード> call "c:Program FilesMicrosoft Visual Studio 9.0VCinv...

0  Web.configの<DataConfiguration>セクションの変更に問題がある  ( Having problems changing the dataconfiguration section of web config in wdp ) 
私はこのようなセクションを含むweb.configファイルを持っています: <事前> <コード> <configuration> <configSections> <section name="dataConfiguration" type="Mi...

1  MSBUILDとTFSとの継続的な統合について学ぶための良いリソース  ( Good resources to learn about msbuild and continuous integration with tfs ) 
MSBUILDには比較的新しいもので、MSBUILDとTFSのあるCIの詳細については、良いリソースをお探しのものです。具体的には、以下の特定のタスクを見ています チェックインが起こるときはいつでも最新のTFSから撮影 ソリューションを構築する コード分析...

43  SVNリビジョンを使用してCCNETのビルドをラベルします  ( Use svn revision to label build in ccnet ) 
SVNをソース制御としてSVNでサンプルプロジェクトでCCNETを使用しています。 CCNETは、チェックインごとにビルドを作成するように設定されています。CCNETはMSBuildを使用してソースコードを構築します。 コンパイル中に最新のリビジョン番号を使...

32  NANTはまだサポートされており、.NET 3.5 / VS2008に適していますか?  ( Is nant still supported and suitable for net 3 5 vs2008 ) 
MSBUILDを使用して私のものを構築しています。 Build ServerによってCRUISecontrol.netを使用したいです。 CCNETはNANTを大きく指していますが、CCNETがProject ConfigurationとMSBuildを通...

19  cruiseControl.netを使用してMSTestを使用して  ( Using mstest with cruisecontrol net ) 
NUnit and Nantでは、クルイセクロールをかなりの間に使用しています。最近のプロジェクトのために、我々はこれまでのところ適切であるVisual Studioに付属のテストフレームワークを使用することにしました。 CruiseControlで実行中...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有