6

TFS2010のmsdeployを使用して、開発Webサイトを毎日更新することに成功しています。

これは、VS2012、アプリケーションを.NET Framework 4.0から4.5に、ASP.NETMVCを3.0から4.0にアップグレードするまでは正常に機能していました。すべてが順調で、アセンブリがデプロイされているように見えますが、実際には何もデプロイされていません。

私はこれを2日間調べていましたが、なぜこれが起こっているのか理解できず、今はアイデアが不足しています。

以下は、アップグレード前のビルドスクリプトの一部です。

<MSBuild
                Projects="$(SolutionRoot)\My.Web\My.Web.csproj"
                Properties="MvcBuildViews=False;AllowUntrustedCertificate=True;AuthType=Basic;Configuration=Dev;CreatePackageOnPublish=True;DeployIisAppPath=dev.myweb;DeployOnBuild=True;DeployTarget=MsDeployPublish;MSDeployPublishMethod=WMSvc;MsDeployServiceUrl=https://10.xxx.xxx.xxx:8172/MsDeploy.axd;UserName=UserName;Password=Password;UseMsdeployExe=True"
                ContinueOnError="False"
                />

アップグレードが開始され、問題がWeb Deploy 2.0を使用していたことが判明したとき、WebDeploy3.0にアップグレードしました。また、で構築していることを確認しましToolsVersion="4.0"た。

アップデート -

msbuild.exe / p:AllowUntrustedCertificate = True / p:AuthType = Basic / p:Configuration = Dev / p:CreatePackageOnPublish = True / p:DeployIisAppPath = dev.myweb / p:DeployOnBuild = True / p:DeployTarget = MsDeployPublish / p: MSDeployPublishMethod = WMSvc / p:MsDeployServiceUrl = https://10.xxx.xxx.xxx:8172 / MsDeploy.axd / p:UserName = UserName / p:Password = Password / p:UseMsdeployExe = True E:\ Builds \ 1 \ WhatEver \ Daily_Build \ Sources \ My.Web \ My.Web.csproj

また、TFSから上記のmsbuildコマンドを実行しようとしましたが、完全にイライラする応答がありませんでした。TFSのイベントログには何もありません。冗長性に関係なくログファイルには何もありません...何かアイデアはありますか?

以下のようにmsdeployを直接使用して機能します。

<Exec Command="&quot;C:\Program Files\IIS\Microsoft Web Deploy V3\MSDeploy.exe&quot; -verb:sync -source:contentPath=&quot;E:\Builds\1\WhatEver\Daily_Build\Sources\My.Web\My.Web.csproj&quot; -dest:contentPath=&quot;E:\dev.my.web&quot;,computername=https://10.xxx.xxx.xxx:8172/MsDeploy.axd,username=UserName,password=Password,authtype=Basic -allowUntrusted=True"
              ContinueOnError="false" />

-

更新2-出力タイプがクラスライブラリ であるため、Microsoftは、公開可能なプロジェクトであり、Webアプリケーションではないプロジェクトのタイプのチェックを追加したようです。これはv4.0で有効でしたが、明らかにv4.5では有効ではありませんでした。

誰かがそれを再び機能させるために何をすべきかについての考えを持っていますか?プロジェクトタイプを変更する必要がありますか?事前にパブリッシングパッケージを作成し、それを展開しますか?または何?

-

同じ問題を抱えている人は他にいますか?共有するソリューションを見つけましたか?

MSBuildのバージョンに問題がありますか?

4

3 に答える 3

6

これが私がお勧めするものです。VS2012では、公開ダイアログによって作成された公開プロファイルを使用して、Webプロジェクトの公開を簡単に自動化できるようになりました。あなたの場合、新しいMSDeployプロファイルを作成します。そのプロファイルを作成すると、設定がProperties \ PublishProfiles(またはMy Project \ PublishProfiles for VB)の下のファイルに保存されます。このファイルの拡張子は.pubxmlになります。これらのファイルは実際にはMSBuildファイルであり、必要に応じてカスタマイズできます。引き続き公開ダイアログを使用することもできます。パスワードは.userファイルに保存され、自分だけが復号化できるように暗号化されます。

そのプロファイルを作成した後、.slnファイルを作成している場合は、以下のコマンドを使用して公開できます。

msbuild mysoln.sln /p:DeployOnBuild=true /p:PublishProfile=<ProfileName> /p:Password=<Password>

.csproj / .vbprojをビルドしている場合は、次のようにこれを少し調整する必要があります。

msbuild mysoln.sln /p:DeployOnBuild=true /p:PublishProfile=<ProfileName> /p:Password=<Password> /p:VisualStudioVersion=11.0

VisualStudioVersionが必要な理由の詳細については、http: //sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspxを参照してください。

これを行うと、以前と同じようにビルド+公開できるようになります。参考までに、VS2010のこれらすべての新しいWeb公開機能をAzureSDKhttps://www.windowsazure.com/en-us/develop/net/#で出荷しまし

また、あなたの質問では、MvcBuildViewsなどのカスタムプロパティを指定していることに気付きました。必要に応じて、これらのプロパティを公開プロファイル(.pubxmlファイル)内に直接配置できるようになりました。もちろん、シナリオにとってより理にかなっている場合は、コマンドラインでそれらを渡すことができます。

詳細については、http://sedodream.com/2012/06/15/VisualStudio2010WebPublishUpdates.aspxをご覧ください。

開発者が公開を自動化するために私たちが持っていたアプローチを見ると、ビルド中に実行されるプロパティとターゲットを指定することでした。このアプローチの問題は、これがWeb公開エクスペリエンスを強化する能力を制限することです。新しいリリースでは、抽象化である公開プロファイルを導入しました。これにより、Web公開パイプラインの基になるターゲットを変更でき、自動化スクリプトは引き続き実行されます。うまくいけば、この時点から、この問題を再検討する必要はありません。

于 2012-10-30T07:08:04.987 に答える
2

今日も同じ問題がありました。私も、VisualStudio2012がインストールされていないマシンを使用して.NET4.5Webアプリケーションを自動的に展開しようとしていました。ただし、状況にはいくつかの小さな違いがありました。TFSの代わりにTeamCityを使用しており、ソリューションは.NET4.0からアップグレードされたものではなく.NET4.5で作成されました。

それにもかかわらず、私は同じ問題を説明しました。ほぼ同じ方法で、MSBuildを使用してWebアプリをビルドし、IISに展開します。このアプローチは、私の開発マシンではうまく機能しました。ただし、CIサーバーでMSBuildを実行すると、非常にうまくWebアプリがビルドされましたが、その後は停止しました。エラーも警告も何もありません。ビルドが成功したというメッセージだけです。アプリをIISにデプロイする試みのわずかなヒントはありませんでした。

MSBuildには、Web展開を実行するための関連するターゲットがありませんでした。修正は、フォルダーC:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Webを開発マシンからCIサーバーにコピーし、CIサーバー上の自分のマシンと同じ場所にコピーすることでした。

それを行うと、MSBuildはWeb Deploy 3.0の必要性について不平を言いましたが、それは簡単に修正されました。これをCIサーバーにもインストールした後、MSBuildはWebアプリを非常にうまく展開しました。

于 2013-01-04T21:59:19.503 に答える
0

ルーク・ウッドワードの答えを拡張するには:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\私も、ローカルマシンからビルドサーバーへのデプロイが修正されたことを発見しました。

ただし、実際の修正は、VS2012インストールの一部としてMicrosoftWeb Developer Toolsをインストールすることです。これにより、特にこのフォルダーが作成されます。これは、Ieppieのラ​​イセンスの異議に対処します。

私はこれをテストしました...

  1. 削除C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\
  2. VS 2012インストーラーを実行し、MSWebDevツールを追加します。
  3. インストール後、C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\戻ったことを確認します。
于 2013-11-08T19:29:58.273 に答える