いつか解決したらいいなってことで書いておく。解決した。
Team Foundation Service(以下、TFS)からAzure Webサイトにデプロイってできるんかしら?と思ってググってみたら以下のサイトを発見した。
What is Azure Cloud Services | Microsoft Docs
これを参考に、試しにVisualStudio2012でASP.NET MVC4プロジェクトを作成して試したところ、あっさり成功。
なら、具体的なサンプルを使ってやってみようと@daruyanagiの「https://github.com/daruyanagi/uhobbs」をネタに試してみたところ、うまくいかなかった。
きっと、ASP.NET Web Pagesだからだと思う。
操作の手順
ざっと以下のような感じ。
- TFSでチームプロジェクトの作成
- Azure Webサイトの作成
- Azure WebサイトからTFSへ接続
- VS2012でWebサイトを開く
- ソリューションをソース管理に追加&チェックイン ※エラーその1発生
- エラーその1の処置実施&チェックイン ※エラーその2発生
環境
ファイル構成
- ソリューションファイル
D:\Users\nakaji\Documents\Visual Studio 2012\Projects\uhobbs - Webサイトソース
D:\Visual Studio 2012\Projects\uhobbs
ソース管理エクスプローラ-
ビルド定義
エラーその1の内容と対処
エラー内容
ASPNETCOMPILER: The directory 'C:\Visual Studio 2012\Projects\uhobbs\' doesn't exist.
原因
ソリューションファイルのAspNetCompiler.PhysicalPathの指定に問題がある様子。
テキストエディタでソリューションファイルを開くとAspNetCompiler.PhysicalPathが以下のようになっていた。
ソリューションファイルから抜粋
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "uhobbs", "..\..\..\..\..\..\Visual Studio 2012\Projects\uhobbs", "{2C5E2584-3272-47BB-9AFD-9E7E1BAD8D07}" ProjectSection(WebsiteProperties) = preProject SccProjectName = "SAK" SccAuxPath = "SAK" SccLocalPath = "SAK" SccProvider = "SAK" TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0" Debug.AspNetCompiler.VirtualPath = "/uhobbs" Debug.AspNetCompiler.PhysicalPath = "..\uhobbs_1\" Debug.AspNetCompiler.PhysicalPath = "..\..\..\..\..\..\Visual Studio 2012\Projects\uhobbs\" Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\uhobbs\" Debug.AspNetCompiler.Updateable = "true" Debug.AspNetCompiler.ForceOverwrite = "true" Debug.AspNetCompiler.FixedNames = "false" Debug.AspNetCompiler.Debug = "True" Release.AspNetCompiler.VirtualPath = "/uhobbs" Release.AspNetCompiler.PhysicalPath = "..\..\..\..\..\..\Visual Studio 2012\Projects\uhobbs\" Release.AspNetCompiler.TargetPath = "PrecompiledWeb\uhobbs\" Release.AspNetCompiler.Updateable = "true" Release.AspNetCompiler.ForceOverwrite = "true" Release.AspNetCompiler.FixedNames = "false" Release.AspNetCompiler.Debug = "False" VWDPort = "58186" EndProjectSection EndProject
対処
Debug.AspNetCompiler.PhysicalPathとRelease.AspNetCompiler.PhysicalPathを以下のように修正する
Debug.AspNetCompiler.PhysicalPath = "..\uhobbs_1\" Release.AspNetCompiler.PhysicalPath = "..\uhobbs_1\"
エラーその2の内容と対処
エラー内容
Exception Message: The deployment package file (*.zip) was not found. Ensure that PackageAsSingleFile msbuild property is not set to False. (type FileNotFoundException) Exception Stack Trace: at System.Activities.Statements.Throw.Execute(CodeActivityContext context) at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)
原因
わけがわからないよ。
ビルドの定義にて、「プロセス」→「詳細設定」にあるMSBuild引数に「p:PackageAsSingleFile=True」を追加してみたが状況変わらず。
どうしたらいいのか知ってる人がいたら教えてください。
解決すれば、ネタエントリを投稿できるんですけどねぇ。
解決方法
どうやって解決したかというと、WebサイトをWebアプリケーションに変えてしまうというとっても単純な話。
手順は以下の通り。
- ソリューションに新しいプロジェクト「ASP.NET 空の Web アプリケーション」を追加する
- Webサイトの内容を全てWebアプリケーションプロジェクトにコピーする
- Webサイトをばっさり削除
- TFSにチェックイン!
根本解決にはなっていないのかもしれないけど、自分の目的は果たせたのでヨシとしよう。