TransformXmlタスクをMicrosoft.Web.Publishing.Tasks.dllから読み込めませんでした


95

誰かがこのエラーを見て、それを修正する方法を知っていますか?

"TransformXml"タスクをアセンブリC:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web \ Microsoft.Web.Publishing.Tasks.dllから読み込めませんでした。

ファイルまたはアセンブリ 'file:/// C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web.Microsoft.Web.Publishing.Tasks.dll'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。

宣言が正しいこと、アセンブリとそのすべての依存関係が利用可能であること、およびタスクにMicrosoft.Build.Framework.ITaskを実装するパブリッククラスが含まれていることを確認します。

SQL Serverがインストールされていないときに問題が発生することを他の場所で読みました。しかし、SQL Express 2012 x64がSP1と共にインストールされています。VS 2013 Professionalも実行しています。

私はこれとまったく同じソリューションをVS 2012 Expressで問題なく実行しました。


1
これはnugetパッケージである必要があります。私のプロジェクト内のこの隠された参照は好きではありません。
Jaider

Benjamin Scheibeからの回答を正しいものとしてマークする必要があります。それが最良の解決策のようです
BHuelse

回答:


163

Visual Studio 2012を使用している限り、Dai Bokとemalamisuraが提供する回答は正常に機能します。VS2013の場合も同様に失敗します。これをVisual Studioのすべてのバージョンで機能させるには、次のことを行う必要があります。

  • ロードに失敗したプロジェクトのプロジェクトファイル(.csproj)を開く
  • 検索する <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />
  • に変更 <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.targets" />
  • プロジェクトをリロードします

これにより、Visual Studioの正しいバージョンが動的かつ適切に設定されます。


2
私はあなたのソリューションBenjaminが好きですが、vs2010を使用していてvs2012にまだアップグレードしていない人がいるため、v11フォルダーが欠落しているという問題がありました
Dai Bok

7
これで正しい道から始められましたが、変更は<UsingTask TaskName = "TransformXml" ...>ノードに対するものでした。AssemblyFileが間違ったバージョンを使用していました。ここでバージョンを変更する必要があるだけです。別のオプションは、バージョンを明示的に設定する代わりにバージョンマクロを使用することです。
スコット

5
$(VisualStudioVersion)は以前のバージョンを返しています:(
Jaider

1
これは、パラメータを指定できますstackoverflow.com/questions/20002532/...
Jaider

2
VS2015からVS2017へのアップグレード中に完全に機能します。これで、両方のIDEでソリューションを開くことができます。
Yury Schkatula 2017

29

私の作業を開始するために、私は自分のv10.0フォルダーをコピーして名前をに変更したv11.0だけで、それ以降は問題なく動作するようです。それが今のところ簡単な修正です。

これはおそらく最良の解決策ではないので、うまくいきますが、Windows 7および.NET Framework 4用のMicrosoft Windows SDKをインストールしようとしましたが、Windows 7および.NET Framework 4用のWindows SDKをインストールするのに時間がかかります。ダウンロード。


1
v10.0で「Web」フォルダが表示されませんでした。それをv12.0フォルダーからv11.0フォルダーにコピーしました。
Sundeep、2015年

9

私はビルドサーバーでこの問題に数日間取り組んできたので、解決策を文書化すると思いました。まず、ビルドサーバーにWebパブリッシング拡張機能がインストールされています。TransformXmlタスクを使用して、Webアプリケーションプロジェクトの内部のコンテンツを作成できます。

Webアプリケーションプロジェクトのでそれを使用するために、プロジェクトにUsingTask要素を追加し、msビルドプロパティを使用して適切な場所を指すようにしました(Benjaminが示すとおり)。ただし、それらは私のビルドサーバーにありませんでした(ビルドサーバーのファイルシステムに簡単にアクセスできるユーザーは、おそらくこれをスキップして、関連するパッケージをVisual Studioにインストールするだけです)。私はビジュアルスタジオのバージョンをハードコーディングすることさえしましたが、それはいつも私にそのエラーを落としました。

ようやくあきらめて、ローカルPCからDLLをプルしました。

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.XmlTransform.dll

それらをソース管理にアップロードし、そのフォルダーをビルドのワークスペースに追加しました(ビルド定義の編集->ソース設定->ソース管理フォルダー)。そこからは、フォルダを参照する必要すらありません。ここに、私のUsingTaskの例を示します。

  <UsingTask TaskName="TransformXml" AssemblyFile="Microsoft.Web.Publishing.Tasks.dll" />

これで、TransformXmlタスクを使用して、任意のプロジェクトのコンテンツを心に留めることができます。


9
MSBuild.Microsoft.VisualStudio.Web.targetsのパッケージには、VSをインストールせずに構築するために必要な目標を持っています。例:<UsingTask TaskName = "TransformXml" AssemblyFile = "packages \ MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1 \ tools \ VSToolsPath \ Web \ Microsoft.Web.Publishing.Tasks.dll" />。詳細については、このブログを参照してください
moonpatrol 2015年

1
@moonpatrolねえ、私はこの方法を好むので、あなたはそれを答えにするべきです-パッケージをインストールしてからそれを参照する-絶対に普遍的な解決策:-)私は試してみましたが、完全に動作しました。とにかくありがとうございました!あなたがそれを答えにしたら、私にpingしてください。投票します。
Tengiz

9

問題を修正するには、

  1. コンピューターでVisual Studio Installerを見つけます
  2. クリックまたはタップしてインストーラーを起動し、[変更]を選択します。
  3. 「個別コンポーネント」画面から、Asp.netおよびWeb開発ツールを選択し、次に「変更/インストール」を選択します。

上記のパスにdllが作成されるため、これで問題が解決しました。


2
私はVS2017を使用しており、この手順を実行してもこれらのファイルは作成されません。それを追加した他の何か(またはASP.netとWeb開発ツールとの組み合わせ)を選択したと思います。しかし、何がわからない:(
Kris

それだけを選択しました。Web関連コンポーネントを選択してインストールしてください。幸運も。
Vinodhini Ramasamy 2017

私はWebワークフロー全体を試してみましたが、それらのファイルはまだありません。この解決策は非常に近いと思います。コンポーネントをインストールするためのHDDのスペースが限られているため、正確に指摘できるとよいのですが
Robert Snyder

4
VS2017のために、私がやりましたTools → Get Tools and Features... → Individual Components: Windows 10 SDK (10.0.14393.0) and ASP.NET and web development tools 。これはトリックをしたようです。
ジョンジョーンズ

5

VisualStudioフォルダーにはv12.0、v14.0、v15.0しかないため、プロジェクトファイルを編集し、参照パスをv10.0からv14.0に変更します。その後、プロジェクトは正常にビルドされます。

前:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />

後:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.Tasks.dll" />

5

VS2019の場合

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(MSBuildToolsVersion

に置き換えMSBuildToolsVersionましたVisualStudioVersion


このドキュメントによって " docs.microsoft.com/visualstudio/msbuild/… " MSBuildToolsVersionVisualStudioVersionに変更してから、このプロパティを次のように変更します " $(MSBuildExtensionsPath32)\ Microsoft \ VisualStudio \ v $(VisualStudioVersion) "
Kim Ki Won

2

これに対する正しい答えは、問題のプロジェクトをアンロードしてからcsprojファイルを編集し、10.0パスを参照しているエントリを探して、代わりに11.0を指すように変更することです。


+1。ある開発マシンから別の開発マシンにワークスペースフォルダーをコピーしたときに、この問題が発生しました。2番目の開発マシンには、v10ではなくv11がインストールされていました。したがって、v10フォルダーは空でした。
maplemale 2014

1

機能させるには、次の2つが必要です。

1)ビルドサーバーに「Web開発ビルドツール」オプションを選択して、Visual Studioビルドツールをインストールします(Visual Studio全体ではなく、VSビルドツールのみが必要です) https://www.visualstudio.com/pl/thank -you-downloading-visual-studio /?sku = BuildTools&rel = 15

2)Microsoft.Web.Publishing.Tasks.dllへのパスが正しいことを確認します

  <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(MSBuildToolsVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />

1

私にとっては、NuGetパッケージMSBuild.Microsoft.VisualStudio.Web.targets v14.0.0.3への参照を追加するだけで機能し始めました

パッケージの作成者が述べたように、プロジェクトファイルにUsingTask要素を追加する必要はありません

https://github.com/pdonald/nuget-webtargets

NuGetパッケージをインストールするだけです。パッケージは、ツールフォルダー内のターゲットファイルを使用するように$(VSToolsPath)プロパティを自動的に設定します。

次に、パッケージで定義されたTransformXmlなどのタスクを使用して、たとえばapp.configを変換できました。

  <Target Name="app_config_AfterCompile" AfterTargets="AfterCompile" Condition="Exists('app.$(Configuration).config')">
    <!--Generate transformed app config in the intermediate directory-->
    <TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
    <!--Force build process to use the transformed configuration file from now on.-->
    <ItemGroup>
      <AppConfigWithTargetPath Remove="App.config" />
      <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
        <TargetPath>$(TargetFileName).config</TargetPath>
      </AppConfigWithTargetPath>
    </ItemGroup>
  </Target>

0

誰かがSDKスタイルのcsprojを使用している場合に備えて、ビルドサーバーにVisual Studioをインストールしなくても、これを実現できます。

  1. まず、プロジェクトにSlowCheetah nugetパッケージをインストールする必要があります。インストールすると、SDKスタイルのプロジェクトに以下が表示されます。

    <PackageReference Include="Microsoft.VisualStudio.SlowCheetah" Version="3.2.20">
            <PrivateAssets>all</PrivateAssets>
            <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
    
  2. 次に、GeneratePathProperty = "true"属性を必ず追加してください(以下を参照)。これは、マシン上のnugetパッケージが復元される場所のパスを取得するのに役立つため、次の部分では非常に重要です。ジョージ・ダングルは、彼の記事でここにそれを説明します

    <PackageReference Include="Microsoft.VisualStudio.SlowCheetah" Version="3.2.20" GeneratePathProperty="true">
            <PrivateAssets>all</PrivateAssets>
            <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
    
  3. SlowCheetahターゲットをプロジェクトにインポートします。

    <Import Project="$(PkgMicrosoft_VisualStudio_SlowCheetah)\build\Microsoft.VisualStudio.SlowCheetah.targets" />
    
  4. これで、ターゲットコマンド(この場合は発行後)を使用して、いくつかのカスタム変換を適用できます。必要な場合は、以下の例の変数を使用する代わりに、以下のファイル名をいつでもハードコーディングできます。

    <Target Name="AfterPublishs" AfterTargets="Publish">
         <TransformTask Source="Web.config" Transform="Web.$(Configuration).MyCustomTransformFile.config" Destination="$(PublishDir)\Web.config" />
    </Target>
    

これまでにSlowCheetahを使用したことがない場合は、ぜひチェックしてみてください。これらには、変換ファイルのプレビューを容易にするVisual Studio拡張機能があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.