9

ビルド時と公開時の\bin両方でディレクトリに含めたい 2 つのライセンス ファイルがあります。

両方のファイルはApp_Dataディレクトリにあり (最初の場所は関係ありません。最後に\bin.

  • Build Action=Content
  • Copy to Output Directory=Copy Always

それらは、\bin私がビルドまたは公開するときではありません。

セットアップの何が問題なのですか? 設定、フォルダー、ファイル、その他...?

アップデート

ファイルを App_Data ディレクトリから移動し、プロジェクト ルートに配置すると、\binビルド時にコピーされます。

4

4 に答える 4

10

.csproject ファイルを少し拡張して、いくつかのプロジェクトでこれを行いました。次のコードはProject、WebProject.csproj のノードのすぐ下に配置する必要があります。ターゲットはAfterBuild、Visual Studio から通常どおりにビルドするときに、一連のファイル (この場合は "参照されていない DLL") を bin フォルダーにコピーするだけです。CustomCollectFiles は、デプロイ時に基本的に同じことを行います。

  <PropertyGroup>
    <UnreferencedDlls>..\lib\Unreferenced\**\*.dll</UnreferencedDlls>
  </PropertyGroup>
  <PropertyGroup>
    <CopyAllFilesToSingleFolderForPackageDependsOn>
      CustomCollectFiles;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForPackageDependsOn>
  </PropertyGroup>
  <Target Name="AfterBuild">
    <Message Text="Copying unreferenced DLLs to bin" Importance="High" />
    <CreateItem Include="$(UnreferencedDlls)">
      <Output TaskParameter="Include" ItemName="_UnReferencedDLLs" />
    </CreateItem>
    <Copy SourceFiles="@(_UnReferencedDLLs)" DestinationFolder="bin\%(RecursiveDir)" SkipUnchangedFiles="true" />
  </Target>
  <Target Name="CustomCollectFiles">
    <Message Text="Publishing unreferenced DLLs" Importance="High" />
    <ItemGroup>
      <_CustomFiles Include="$(UnreferencedDlls)" />
      <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
        <DestinationRelativePath>bin\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
      </FilesForPackagingFromProject>
    </ItemGroup>
  </Target>

変更する必要がある部分は、基本的に、UnreferencedDllsフォルダー構造に合わせてノードです。この**\*.dll部分は、単に「この下の任意のレベルにあるすべての DLL ファイル」を意味します。

于 2013-08-07T19:17:57.440 に答える
0

Microsoft Connect のこの投稿では、答えははるかに簡単です: Unit Test で参照されたアセンブリは、TestResults/Out にコピーされません。

だから私がしたことは次のとおりでした:

[TestClass]
[DeploymentItem("Some.dll")]
public class SomeTests
{
...
}

それは私にとってはうまくいきます。それが役立つことを願っています。

于 2013-12-20T12:20:47.097 に答える