11

サードパーティのアセンブリを参照するWebアプリケーションプロジェクトがあります。サードパーティのアセンブリは、実行時に見つける必要のあるいくつかのネイティブdllを使用します。そのため、これらのdllをプロジェクトのbinフォルダーに追加して、確実に見つけられるようにしたいと思いました。

ただし、/ bin /のプロジェクトにファイルを追加し、[コピーして出力]を選択すると、ファイルがコンパイルされ、/ bin/binに公開されます。それらをルートフォルダに追加することは機能しますが、正しい解決策になることはほとんどありません。

それらをビルドターゲット「AfterBuild」に追加しても、公開時に効果はありません(例:「ビルドデプロイメントパッケージ」)

また、MSBuildターゲット_CopyWebApplicationLegacyが呼び出されるTFSを介してソリューションをビルドするときにも機能する必要があります。

4

3 に答える 3

10

解決策は、私がすでに試したことの組み合わせでした。

  • プロジェクトに「Bin」フォルダを含めます
  • 必要なファイルを追加します(開発構造のため、リンクとして追加しました)
  • 次のプロパティを設定します:「ビルドアクション=コンテンツ」および「出力にコピー=コピーしない」

TFSでのビルドを自動化する場合でも、公開時にファイルがbinフォルダーにコピーされるようになりました。

これを必要としたコンポーネントはGdPictureで、実行時にいくつかのネイティブDLLを使用します。

于 2012-09-24T12:48:08.743 に答える
3

ソリューションまたはワークスペースのいずれかにlibフォルダーを作成して、サードパーティのdllを配置するのが一般的です。次に、プロジェクトからこの場所への参照を追加し、この場所がソース管理下にあることを確認します。

NuGetを使用してこれをパッケージ化することもできます。これは、ソリューションレベルのパッケージフォルダーを自動的に使用します。

于 2012-09-24T10:10:55.827 に答える
0

この記事に基づくhttp://sedodream.com/2010/05/01/WebDeploymentToolMSDeployBuildPackageInclusiveExtraFilesOrExclusiveSpecificFiles.aspx。binフォルダーのすべてのファイルをキャプチャするメイン(ソリューションのビルド順に最後)のプロジェクトファイルにmsbuildターゲットを定義することができます。このような

<Target Name="CustomCollectFiles">
    <ItemGroup>
      <_CustomFiles Include="$(OutDir)\**\*" />
      <FilesForPackagingFromProject  Include="%(_CustomFiles.Identity)">
        <DestinationRelativePath>$(OutDir)\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
      </FilesForPackagingFromProject>
    </ItemGroup>
  </Target>
  <PropertyGroup>
    <CopyAllFilesToSingleFolderForPackageDependsOn>
      CustomCollectFiles;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForPackageDependsOn>
  </PropertyGroup>

そして、ルートプロジェクト要素を閉じる前に配置します。

于 2017-07-13T13:29:13.143 に答える