2
<Copy SourceFiles="@(sourceFiles)" DestinationFolder="$(destinationFolder)\"/>

これは、MSBuild 3.5 でうまく機能していました。しかし、4.0 に移行しようとして以来、MSBuild はこのエラーをスローします。

The "Microsoft.Sdc.Tasks.Folder.Copy" task could not be loaded from the assembly Microsoft.Sdc.Tasks.dll. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.

を入れてみましたUsingTaskが、やはりだめです。何か案は?

4

1 に答える 1

1

理由は簡単で、

  1. http://sdctasks.codeplex.com/を .NET 2.0 GAC にインストールします。したがって、MSBuild 2.0 または 3.5 はそれを正常にロードできます。
  2. .NET 4 は別の GAC を使用するため、MSBuild 4 は .NET 2 GAC にインストールしたものを見つけることができません。

したがって、エラー メッセージが表示されます。

私のアドバイス、

  1. http://sdctasks.codeplex.com/で提案されているように、MSBuild Community Pack に切り替えます。
  2. MSBuild 拡張アセンブリを GAC に追加する代わりに、それを依存関係フォルダー (lib など) に配置し、ソース管理に追加する必要があります。
  3. プロジェクト ファイル (csproj など) を変更するときは<UsingTask>、依存関係フォルダーへのアセンブリ パスを使用していることを確認してください。

私のオープン ソース プロジェクト #SNMP は Gendarme MSBuild 拡張機能を使用しており、上記のトリックを長い間使用してきました。

https://github.com/lextm/sharpsnmplib/blob/master/SharpSnmpLib/SharpSnmpLib.csproj

于 2012-10-11T12:17:57.333 に答える