Web配置を使用してカスタム配置セットアップを実行したいと考えています。
多くの異なる環境(チームメンバーのローカルマシン、4つの異なるビルドサーバー)で実行するときにこれを正常に機能させたいので、相対的なローカルパスにデプロイしたいと思います。
私がやりたいのは:
ただし、デプロイ先のローカルファイルパスを「..\Deploy_Production」として入力すると
webデプロイはこれに文句を言います:
2>Connecting to ..\Deploy_Live...
2>Unable to create the Web site '../Deploy_Live'. The URL http://:0 is invalid.
Webデプロイは、相対ファイルパスがWebサイトのURLであると見なすかのようです。代わりに「.. \」を使用しても、私の目的には役立ちません。
WebDeployをローカル相対パスにデプロイするにはどうすればよいですか?
編集1:
ビルドする前にConvertToAbsolutePathタスクを使用しようとしましたが、役に立ちませんでした。
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<SiteUrlToLaunchAfterPublish>http://mywebsite.com</SiteUrlToLaunchAfterPublish>
<publishUrl>..\Deploy_Production</publishUrl>
<DeleteExistingFiles>False</DeleteExistingFiles>
</PropertyGroup>
<Target Name="BeforeBuild">
<ConvertToAbsolutePath Paths="$(publishUrl)">
<Output TaskParameter="AbsolutePaths" PropertyName="publishUrl" />
</ConvertToAbsolutePath>
</Target>
編集2:上記は機能しますが、コマンドラインビルドを実行する場合はソリューションファイルではなくのみプロジェクトファイル
ここにバグがあります。ファイルシステムを使用して公開する場合は、フルパスを指定する必要があります。このバグは今週初めに実際に見つかりました。次のアップデートで修正される予定です。この場合、相対パスが渡されると、そのIISパス)と誤って見なされます。
回避策として、.pubxmlを編集してpublishUrlをフルパスにすることができます。幸い、MSBuildプロパティを使用して、これがチームシナリオで機能するようにすることができます。 .pubxmlファイルを編集し、publishUrl
の値を次のように更新する必要があります。
<publishUrl>$(MSBuildThisFileDirectory)..\..\..\Deploy_Production</publishUrl>
このパスは、.pubxmlファイル自体からの相対パスになります。これがコマンドラインと公開ダイアログの両方から機能することを確認しました。これに問題がある場合はお知らせください。ただし、修正は数か月以内にリリースされるはずです[もちろん保証はありません:)]。