web-dev-qa-db-ja.com

TeamCityビルドで「TransformXml」タスクが見つかりませんでした(エラーMSB4036)

こんにちは、TeamCityでサーバーを構築しています。私のプロジェクトはSitecore Webアプリケーションです。私はTDS(HedgehogDevelopment)を使用しています。 TeamCityでMSビルドを使用してビルド設定をセットアップしましたが、ビルド構成マネージャーでTDSプロジェクトが無効になっていると動作しているように見えます。しかし、それは私がネットエラーを取得しています

C:\ Program Files(x86)\ MSBuild\HedgehogDevelopment\SitecoreProject\v9.0\HedgehogDevelopment.SitecoreProject.targets(310、5):エラーMSB4036:「TransformXml」タスクが見つかりませんでした。以下を確認してください。1.)プロジェクトファイル内のタスクの名前は、タスククラスの名前と同じです。 2.)タスククラスは「パブリック」であり、Microsoft.Build.Framework.ITaskインターフェイスを実装します。 3.)タスクは、プロジェクトファイルまたは「C:\ Windows\Microsoft.NET\Framework64\v3.5」ディレクトリにある* .tasksファイルで正しく宣言されています。プロジェクトNetKey.TDSMaster\MyProject.TDSMaster.scprojが失敗しました。 Project Website\MyProject.slnが失敗しました

エラーの説明のヘルプは私には当てはまりません。ビルドマシンにVS 2012がありません。 WebプロジェクトをサポートするためにMicrosoft Visual Studio 2012 Shellをインストールしました。解決方法ありがとう。

25
Arbejdsglæde

TransformXMLは、ASP.NET Web公開ツールの一部として提供されます。そのため、通常、ビルドサーバーにVisual Studioがインストールされており、Visual Studioのシェルバージョン以上のものが必要です。 Visual Studio Express Web Editionをインストールすることでもうまくいくかもしれません。

Web-Deploy package 十分かどうかを確認しますが、通常はビルドエージェントにVisual Studioのフルバージョンをインストールします。これは、MSDNサブスクリプションライセンスでは合法です。

いくつかの実験の後、これらのタスクが公式の方法でインストールされるようにするには、ビルドサーバーに少なくともVisual Studio Web Developer Toolsをインストールする必要があることがわかります。 Visual Studio Express Web Editionをインストールすれば十分だと思います。

enter image description here

21
jessehouwing

これを試して:

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

短い答え-明示的にインポート

私がしなければならなかったこと:

_<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets" Condition="!Exists('$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets')" />
_

ロングアンサー

VS2013で[ファイル]-> [新しいWebプロジェクト]を実行すると、*。csprojファイル内で次のようになります。

_<PropertyGroup>
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
_

ビルドマシンと複数の開発マシンでは、$(VisualStudioVersion)は常に_11.0_と評価されました。 _12.0_であるVS2013を搭載したマシンでも。

それに飛び込むと、上からの_Microsoft.WebApplication.targets_には、ファイル_Microsoft.Web.Publishing.targets_をインポートするための行があります(行377のように存在する場合のみ):

_<!--Import publishing target-->
<Import Project="..\Web\Microsoft.Web.Publishing.targets" Condition="Exists('..\Web\Microsoft.Web.Publishing.targets')" />
_

私にとって、これは暗黙 _Microsoft.Web.Publishing.targets_のインポートです。

問題は、このファイルが存在しない場合、何も実行せず、TransformXmlタスクを使用しようとしたときにエラーが発生するまでそれを知らないことです。

VS2013をインストールしても、_Microsoft.Web.Publishing.targets_は_11.0_ディレクトリにインストールされませんでした。 _12.0_ディレクトリにインストールしました。 VS2012をインストールした場合、wouldを実行します。

いずれにせよ、explicitly _Microsoft.Web.Publishing.targets_が存在せず存在しなかった場合に_12.0_ディレクトリからインポートすることで解決できました暗黙的に = _Microsoft.WebApplication.targets_によってインポートされます:

_<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets" Condition="!Exists('$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets')" />
_
13
Rick Glos

Visual Studio 2017では、デフォルトでほとんどの(またはすべての)コンポーネントはインストールされませんが、 https://docs.Microsoft.com/en -us/visualstudio/install/modify-visual-studio

私のマシンでは、「C:\ Program Files(x86)\ Microsoft Visual Studio\Installer\vs_installer.exe」にあるインストーラー

1

VS2015でTypeScriptツールを2.4.10から2.3.3にダウングレードした後、同じ問題が発生しました。

ソリューション

これをMicrosoft.TypeScript.targetsファイルから削除します

    <FormatLocalizedString Condition="'$(TypeScriptVersionCheckResult)' == 'NoneSpecified'"
  Culture="$(PreferredUILang)" 
  Name="TypeScriptNoVersionWarning" 
  Arguments="$(LastKnownTypeScriptVersion)">
  <Output TaskParameter="String" PropertyName="TypeScriptNoVersionWarning" />
</FormatLocalizedString>

<FormatLocalizedString Condition="'$(TypeScriptVersionCheckResult)' == 'Downgrade' OR '$(TypeScriptVersionCheckResult)' == 'Upgrade'"
  Culture="$(PreferredUILang)" 
  Name="TypeScriptVersionMismatchWarning" 
  Arguments="$(TypeScriptToolsVersion);$(LastKnownTypeScriptVersion)">
  <Output TaskParameter="String" PropertyName="TypeScriptVersionMismatchWarning" />
</FormatLocalizedString>
0
imfloflo