2013-06-03 24 views
25

Webプロジェクトの1つをソリューションにサーバーに展開しようとしています。私はそれを実行すると、MSBuildのはまだ私のWebSiteプロジェクトがそれに依存していないにもかかわらず、私のWebServiceプロジェクトをビルドしようとします(ただし、それはServicesに依存しない、しかしmsbuildを使用してソリューションから1つのWebプロジェクトを公開する

msbuild MySolution.sln /t:WebSite:Rebuild /p:DeployOnBuild=True /p:PublishProfile=Prod ... 

:私はそうのようなチームシティーでのMSBuildを使用していますソリューションにもプロジェクトがあります)。 1つのプロジェクト(別名:WebSite)を公開するにはどうすればよいですか?

私も

msbuild WebSite/WebSite.csproj /p:DeployOnBuild=True ... 

を使用してプロジェクトファイルを構築しようとしたが、それはそれは、パッケージを復元することができないと文句を言い

[07:47:17]WebSite\WebSite.csproj.teamcity: Build target: Build 
[07:47:17][WebSite\WebSite.csproj.teamcity] RestorePackages 
[07:47:17][RestorePackages] Exec 
[07:47:17][Exec] C:\TeamCity\buildAgent\work\cab8a3d752df3a51\.nuget\NuGet.targets(90, 15): error MSB4064: The "LogStandardErrorAsError" parameter is not supported by the "Exec" task. Verify the parameter exists on the task, and it is a settable public instance property. 
[07:47:17][Exec] C:\TeamCity\buildAgent\work\cab8a3d752df3a51\.nuget\NuGet.targets(89, 9): error MSB4063: The "Exec" task could not be initialized with its input parameters. 
[07:47:17][WebSite\WebSite.csproj.teamcity] Project WebSite\WebSite.csproj.teamcity failed. 

私はNuGetパッケージの復元オプションを無効にすると、CoreCompile(CSC)私が聞いたことがないエラーで失敗し、起こってはならない:

[07:54:43]WebSite\WebSite.csproj.teamcity: Build target: Build (13s) 
[07:54:55][WebSite\WebSite.csproj.teamcity] CoreCompile 
[07:54:55][CoreCompile] Csc 
[07:54:56][Csc] Areas\Api\Services\TripService.cs(19, 104): error CS0241: Default parameter specifiers are not permitted 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(11, 35): error CS1031: Type expected 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(11, 53): error CS1002: ; expected 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(16, 28): error CS1519: Invalid token '(' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(16, 37): error CS1519: Invalid token ',' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(17, 27): error CS1519: Invalid token '(' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(17, 32): error CS1519: Invalid token ')' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(23, 17): error CS1519: Invalid token 'for' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(23, 26): error CS1519: Invalid token '<=' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(23, 45): error CS1519: Invalid token '-' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(23, 51): error CS1519: Invalid token '++' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(24, 34): error CS0270: Array size cannot be specified in a variable declaration (try initializing with a 'new' expression) 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(24, 37): error CS1519: Invalid token '==' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(24, 51): error CS1519: Invalid token ')' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(24, 63): error CS1519: Invalid token '++' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(25, 41): error CS1519: Invalid token '>' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(25, 53): error CS1519: Invalid token ')' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(27, 36): error CS1519: Invalid token '=' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(27, 48): error CS1519: Invalid token ';' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(28, 36): error CS1519: Invalid token '=' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(29, 37): error CS1519: Invalid token '=' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(29, 48): error CS0270: Array size cannot be specified in a variable declaration (try initializing with a 'new' expression) 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(29, 50): error CS1519: Invalid token ';' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(30, 33): error CS1519: Invalid token '=' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(30, 44): error CS0270: Array size cannot be specified in a variable declaration (try initializing with a 'new' expression) 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(30, 50): error CS1519: Invalid token ';' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(32, 21): error CS0116: A namespace does not directly contain members such as fields or methods 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(35, 50): error CS1518: Expected class, delegate, enum, interface, or struct 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(38, 21): error CS0116: A namespace does not directly contain members such as fields or methods 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(40, 50): error CS1518: Expected class, delegate, enum, interface, or struct 
[07:54:56][Csc] Helpers\StatisticsUtility.cs(42, 21): error CS1022: Type or namespace definition, or end-of-file expected 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(8, 59): error CS1031: Type expected 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(8, 80): error CS1002: ; expected 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(10, 55): error CS1519: Invalid token '(' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(10, 60): error CS1520: Class, struct, or interface method must have a return type 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(10, 82): error CS1002: ; expected 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(13, 23): error CS1518: Expected class, delegate, enum, interface, or struct 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(15, 60): error CS1518: Expected class, delegate, enum, interface, or struct 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(18, 23): error CS1518: Expected class, delegate, enum, interface, or struct 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(20, 25): error CS1518: Expected class, delegate, enum, interface, or struct 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(23, 28): error CS1518: Expected class, delegate, enum, interface, or struct 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(26, 28): error CS1518: Expected class, delegate, enum, interface, or struct 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(29, 24): error CS1518: Expected class, delegate, enum, interface, or struct 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(29, 84): error CS1518: Expected class, delegate, enum, interface, or struct 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(32, 28): error CS1518: Expected class, delegate, enum, interface, or struct 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(35, 9): error CS1022: Type or namespace definition, or end-of-file expected 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(23, 26): error CS0101: The namespace '<global namespace>' already contains a definition for '?' 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(26, 26): error CS0101: The namespace '<global namespace>' already contains a definition for '?' 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(29, 22): error CS0101: The namespace '<global namespace>' already contains a definition for '?' 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(29, 83): error CS0101: The namespace '<global namespace>' already contains a definition for '?' 
[07:54:56][Csc] Helpers\UrlHelperExtensions.cs(32, 26): error CS0101: The namespace '<global namespace>' already contains a definition for '?' 
[07:54:56][Csc] Controllers\SessionController.cs(13, 51): error CS0241: Default parameter specifiers are not permitted 
[07:54:56][Csc] Helpers\JsonNetResult.cs(13, 44): error CS1031: Type expected 
[07:54:56][Csc] Helpers\JsonNetResult.cs(13, 72): error CS1041: Identifier expected, 'object' is a keyword 
[07:54:56][Csc] Helpers\JsonNetResult.cs(13, 91): error CS1002: ; expected 
[07:54:56][Csc] Helpers\JsonNetResult.cs(16, 38): error CS1519: Invalid token '=' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\JsonNetResult.cs(16, 59): error CS1519: Invalid token ';' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\JsonNetResult.cs(17, 64): error CS1519: Invalid token '=' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\JsonNetResult.cs(17, 90): error CS1519: Invalid token ';' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\JsonNetResult.cs(18, 32): error CS1519: Invalid token '=' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\JsonNetResult.cs(18, 46): error CS1519: Invalid token ';' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\JsonNetResult.cs(19, 33): error CS1519: Invalid token ';' in class, struct, or interface member declaration 
[07:54:56][Csc] Helpers\JsonNetResult.cs(22, 23): error CS1518: Expected class, delegate, enum, interface, or struct 
[07:54:56][Csc] Helpers\JsonNetResult.cs(25, 37): error CS1518: Expected class, delegate, enum, interface, or struct 
[07:54:56][Csc] Helpers\JsonNetResult.cs(32, 23): error CS1518: Expected class, delegate, enum, interface, or struct 
[07:54:56][Csc] Helpers\JsonNetResult.cs(35, 37): error CS1518: Expected class, delegate, enum, interface, or struct 
[07:54:56][Csc] Helpers\JsonNetResult.cs(40, 9): error CS1022: Type or namespace definition, or end-of-file expected 
[07:54:56][Csc] Mailers\ITripMailer.cs(13, 132): error CS0241: Default parameter specifiers are not permitted 
[07:54:56][Csc] Mailers\TripMailer.cs(54, 85): error CS0241: Default parameter specifiers are not permitted 
[07:54:56][Csc] Services\Impl\AuthorizationService.cs(12, 70): error CS0241: Default parameter specifiers are not permitted 
[07:54:56][Csc] Services\Impl\AuthorizationService.cs(43, 77): error CS0241: Default parameter specifiers are not permitted 
[07:54:56][WebSite\WebSite.csproj.teamcity] Project WebSite\WebSite.csproj.teamcity failed. 

答えて

48

私はブログ数ヶ月後にこれについてhttp://sedodream.com/2013/03/06/HowToPublishOneWebProjectFromASolution.aspxでged。私はここでも詳細をコピーしました。下記を参照してください。さえずり@nunofcosta


今日は「どのように私は多くを含む溶液から1つのWebプロジェクトを公開していますか?」

彼はに実行されていることを問題彼がから構築されていることをされた私のおおよその質問をしmsbuild.exeに次のプロパティを渡します。

/p:DeployOnBuild=true 
/p:PublishProfile='siteone - Web Deploy' 
/p:Password=%password% 

公開を自動化する方法の詳細については、http://sedodream.com/2013/01/06/CommandLineWebProjectPublishing.aspxをご覧ください。

これらのプロパティをmsbuild.exeに渡すと、グローバルプロパティと呼ばれます。これらのプロパティはオーバーライドするのが難しく、ビルドされたすべてのプロジェクトに渡されます。このため、複数のWebプロジェクトを持つソリューションがある場合、各Webプロジェクトがビルドされるときに、同じプロパティセットで渡されます。このため、各プロジェクトがビルドされるときに、そのプロジェクトの公開プロセスが開始され、というsiteoneというファイルが見つかることが予想されます。* Deploy.pubxml * Properties \ PublishProfiles *フォルダにあります。ファイルが存在しない場合、操作は失敗する可能性があります。

注:オーケストレーションされたパブリッシュでこのテクニックを使用するには、https://stackoverflow.com/a/14231729/105999のコメントを参照してください。

どうすればこの問題を解決できますか?

サンプルを見てみましょう(下記のリンクを参照)。私は解決策を持っていますPublishOnlyOne、以下のプロジェクトで。

  1. ProjA
  2. ProjB

ProjAは「siteone - Web配置」という名前のパブリッシュプロファイルを有し、ProjBにはありません。これを公開しようとすると、次のコマンドラインを試すことができます。

msbuild.exe PublishOnlyOne.sln /p:DeployOnBuild=true /p:PublishProfile=’siteone – Web Deploy’ /p:Password=%password% 

サンプルでpublish-sln.cmdを参照してください。

siteone - Web Deployそのプロジェクトのプロファイルがないため、ProjBのビルドに時間がかかる場合は、これを実行します。このため、DeployOnBuildを渡すことはできません。代わりにここに私たちがする必要があるものがあります。

  1. 編集ProjA.csproj条件付きでそのプロパティ

私はProjAを編集し、中にインポート文の前に次のプロパティグループを追加して、コマンドラインのパスからDeployOnBuild

  • を設定します別のプロパティを定義します.csprojファイルここで

    <PropertyGroup> 
    <DeployOnBuild Condition=" '$(DeployProjA)'!='' ">$(DeployProjA)</DeployOnBuild> 
    </PropertyGroup> 
    

    あなたはDeployOnBuildがDeployProjAは限りが空ではないようであるどのような値に設定されていることがわかります。今改訂コマンドは次のとおりです。

    msbuild.exe PublishOnlyOne.sln /p:DeployProjA=true /p:PublishProfile=’siteone – Web Deploy’ /p:Password=%password% 
    

    ここでは代わりにDeployOnBuildを渡すので、私はその後DeployOnBuildを設定しますDeployProjAに渡します。 DeployOnBuildはProjBに渡されなかったので、公開しようとはしません。

    完全なサンプルはhttps://github.com/sayedihashimi/sayed-samples/tree/master/PublishOnlyOneにあります。

  • +0

    ニースの過去記事を!これは間違いなく理にかなっています。しかし、私は、SOの別の質問に基づいて、msbuildファイルを作成して私の問題を解決した:http://stackoverflow.com/questions/3097489/how-to-publish-web-with-msbuild –

    +1

    これは非常に巧妙な答えだった私は大変ありがとうございました。それは私にとって深刻な問題を解決しました! –

    +0

    素晴らしい!これは私が必要としていたものであり、完璧に働いています。回答と素晴らしいブログ投稿に感謝します。 –

    12

    これには、のほうがはるかに簡単ながあります。 MSBuildは、ソリューションを構築する際に単一のプロジェクトを対象とすることをサポートします。これを行うには、プロジェクト名をTargetパラメーターに入れます。これは、ソリューションで指定したプロジェクトのビジュアル名です(必ずしも.csprojファイルの名前と同じである必要はありません)。

    注:プロジェクト名のドット(。)をアンダースコア(_)のに置き換えるのは、です。プロジェクト名は「Your.Project.Name」であれば

    例MSBuildのコマンドライン、:

    msbuild.exe YourSolutionName.sln /T:"Your_Poject_Name" /P:DeployOnBuild=true /P:PublishProfile=YourPublishProfile.pubxml 
    

    また、そのプロジェクトのビルドターゲットを指定することもできますが、この目標は、内のすべてのプロジェクトのために存在している必要があります解決策:

    msbuild.exe YourSolutionName.sln /T:"Your_Poject_Name:Rebuild" /P:DeployOnBuild=true /P:PublishProfile=YourPublishProfile.pubxml 
    

    ソース

    1. のTh一部のVisual Studio 2008以降MSDNに記載されている:交換 トリックを指摘しヴァシルTrifonovのに https://msdn.microsoft.com/en-us/library/ms164311(v=vs.140).aspx
    2. 感謝: http://www.codeproject.com/Articles/654910/How-to-build-a-specific-project-from-a-solution-wi
    +0

    これは機能しますが、Webプロジェクトのすべての依存関係を構築するようには見えません。私はクラスライブラリを参照し、msbuildコマンドを実行することでこれをテストしました。それはライブラリを見つけることができないと言ってエラーを出した。 – Remotec

    +0

    これは、サーバー方式のCI構成(VS2015)でこの手法を使用しているので機能します。それぞれのソリューション構成(パブリッシュプロファイルで選択されている)の下で、クラスライブラリが「ビルド」に設定されていることを確認します。 – arni

    関連する問題