25

Web 配置を使用して、カスタム配置セットアップを実行したいと考えています。

多くの異なる環境 (チーム メンバーのローカル マシン、4 つの異なるビルド サーバー) で実行するときにこれを正常に動作させたいので、相対的なローカル パスにデプロイします。

私がやりたいことは次のとおりです。

  • ローカルの相対パスにデプロイする
  • ビルド後のステップに魔法のようなことをさせる...

ただし、デプロイ先のローカル ファイル パスを「..\Deploy_Production」として入力すると、

web deploy はこれに文句を言います:

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: 上記は機能しますが、プロジェクトファイルではなくソリューションファイルに対してコマンドライン ビルドを実行する場合のみです。

4

1 に答える 1

45

ここにバグがあります。ファイル システムを使用して公開する場合、フル パスを指定する必要があります。実際、このバグは今週初めに発見されました。次回のアップデートで修正される予定です。この場合、相対パスが渡されると、IIS パスであると誤って認識されます。

回避策として、.pubxml を編集して、publishUrl をフルパスにすることができます。さいわい、チーム シナリオで機能するように、MSBuild プロパティを使用できます。すべきことは次のとおりです。.pubxml ファイルを編集し、の値をpublishUrl次のように更新します。

<publishUrl>$(MSBuildThisFileDirectory)..\..\..\Deploy_Production</publishUrl>

このパスは、.pubxml ファイル自体に対する相対パスになります。これがコマンド ラインとパブリッシュ ダイアログの両方から機能することを確認しました。これに問題がある場合はお知らせください。ただし、修正は数か月以内にリリースされることを願っています [もちろん保証はありません :)]。

于 2012-08-19T18:44:33.797 に答える