26

次の設定を使用して、Visual Web Developer Express 2010 を使用して、FTP 経由でリモート サーバーにプリコンパイルされた Web サイトを公開したいと考えています。

  • このアプリケーションの実行に必要なファイルのみをデプロイする
  • 公開前にこのアプリケーションをプリコンパイルする
  • ウェブサイトの更新を許可する
  • デプロイされているデータベースはありません
  • サイトは、.zip パッケージとしてではなく、ファイル階層として展開されています

最初のビルド/デプロイはうまくいったように見えましたが、2 回目のコンパイル後に次のエラーが表示されます。

Transformed web.config using C:\path_to_site\Web.Debug.config into obj\Debug\TransformWebConfig\transformed\web.config.
Copying all files to temporary location below for package/publish:
obj\Debug\AspnetCompileMerge\Source.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.5\Web\Transform\Microsoft.Web.Publishing.AspNetCompileMerge.targets(132,5): Error : Can't find the valid AspnetMergePath

Microsoft.Web.Publishing.AspNetConfigurationMerge.targets ファイルのコンテンツのサブセットを次に示します。

  <Target
      Name="GetAspNetMergePath"
      DependsOnTargets="$(GetAspNetMergePathDependsOn)"
      Condition ="'$(GetAspNetMergePath)' != 'false'">
    <PropertyGroup>
      <AspnetMergeName>aspnet_merge.exe</AspnetMergeName>
      <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKToolsDirectory)$(AspnetMergeName)')">$(TargetFrameworkSDKToolsDirectory)</AspnetMergePath>
    </PropertyGroup>
    <Error Condition="'$(AspnetMergePath)' == '' Or !Exists($(AspnetMergePath))"
           Text="Can't find the valid AspnetMergePath" />
  </Target>

編集:発行設定を変更して、発行前に既存のファイルをすべて削除しても、結局問題は解決しません。このため、問題は今のところローカルにあると想定しています。

web.config に AspMergePath タグがないようです。タグを手動で追加する必要があるかどうかはわかりません。ただし、パス「obj{発行設定}\AspnetCompileMerge\Source」は私のプロジェクトに存在します。

念のために言うと、私のプロジェクト名は「TestProject.NET」です

フィードバックをお待ちしております。

4

7 に答える 7

12

必要なのは、Windows SDK の一部として配布されているツール aspnet_merge.exe です。サイトをプリコンパイルすることを目的としているため、そのプリコンパイルをオフにするか、適切なバージョンのWindows SDKをインストールできます。ダウンロード ページへのリンクが用意されているため、Wikipedia を参照してください。すべてをダウンロード/インストールする必要はありません (巨大です)。Web インストーラーをダウンロードして .Net ツールを選択するだけで、約 50 メガバイトかかります。

Visual Studio 2010 Windows SDK ver. 7.0A を個別にダウンロードすることはできないため、ビルド サーバーに Visual Studio をインストールするか、「MSBuild を実行すると SDKToolsPath を読み取ることができない」への回答で説明されているように微調整する必要があります。

于 2013-04-15T14:55:47.357 に答える
4

[SDK のインストールなどを含む] これらすべての回避策の 1 つは、Precompile On Publish オプションを無効にすることです

オプションダイアログを熟読し、フレンドリーマニュアルを読んで、それが外側のチェックボックスであることに気付くだけでオフになっていたことを確認するために、私はそれをオフにする方法を理解するために多大な時間を費やしました:

ここに画像の説明を入力

チェックを外すと、 に次の変更が加えられます.pubxml

-    <PrecompileBeforePublish>True</PrecompileBeforePublish>
-    <EnableUpdateable>True</EnableUpdateable>
-    <DebugSymbols>False</DebugSymbols>
-    <WDPMergeOption>DonotMerge</WDPMergeOption>

それは私のために働いた。

ただし、ここで説明するように、パッケージを正常に生成するために、パブリッシュ用のサブフォルダー (Visual Studio 2015 ツールを想定) の下に存在するサブフォルダー (これによりinertを介してサイレントにパブリッシュが行われます) と(コンパイラ エラーが発生します)の両方を用意すること重要です。Web/p:DeployOnBuildWebApplications%Program Files (x86)%\MSBuild\Microsoft\VisualStudio\v14.0

于 2016-02-10T12:40:43.133 に答える
1

私は同じ問題にぶつかりました。

Microsoft.Web.Publishing.AspNetConfigurationMerge.targets ファイルを編集して、次の行を追加します。管理者権限でエディタを実行してください。

私の場合、VS2013 では正しいバージョンの Visual Studio に見えます。

x64

<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\</TargetFrameworkSDKToolsDirectory>

x86

<TargetFrameworkSDKToolsDirectory>C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\</TargetFrameworkSDKToolsDirectory>

そしてそれは動作します!プロジェクトをコンパイルできます。

于 2014-09-10T13:30:56.527 に答える