web-dev-qa-db-ja.com

nuspecファイルの「copytooutputdirectory」プロパティを設定するにはどうすればよいですか?

次のnuspecファイルを検討してください。

<?xml version="1.0"?>
<package >
  [SOME METADATA]
  <files>
    <file src="bin\x64\$configuration$\GR*.filetype" target="content\" />
  </files>
</package>

上記は、「GR」で始まるファイルタイプファイルを正常にパッケージ化し、それらを新しい参照ソリューションに追加しました。

問題は、これらのファイルを常に出力ディレクトリにコピーしたいということです。新しいソリューションのプロパティを手動で修正せずに、nuspecを介してこれを行うことはできますか?

8
user1017882

Nuspecファイルの「copytooutputdirectory」プロパティを設定するにはどうすればよいですか?

マーティンは正しい方向を指摘しました、私は前に同じ要求を持っています、そして kjbartelの答え は私にとっていいです。私はあなたの質問のためのより詳細な答えをここに投稿します、これがあなたにいくつかの助けを与えることを願っています。

この質問を解決するには、以下の手順に従います。

  1. プロジェクトフォルダーにxx.targetsファイルを追加し、ターゲットファイルの名前がパッケージIDと同じ名前であることを確認します(TestDemoは私のパッケージIDであるため、.targetsの名前はTestDemo.targetsです)。

  2. ターゲットファイルに以下のコードを追加します。

    <Project xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
     <ItemGroup>
      <None Include="$(MSBuildThisFileDirectory)GRabc.txt">
         <Link>GRabc.txt</Link>
         <CopyToOutputDirectory>Always</CopyToOutputDirectory>
      </None>
     </ItemGroup>
    </Project>
    

注:「$(MSBuildThisFileDirectory)」のパスは相対パスである必要があります。慣れていない場合は、絶対パスを使用できます。

  1. Nuspecファイルで、必要なファイルをターゲットファイルと一緒にBuildディレクトリに追加します。

      <files>
        <file src="bin\x64\Debug\GR*.txt" target="Build\" />
        <file src="TestDemo.targets" target="Build\" />
        <file src="bin\Debug\TestDemo.dll" target="lib\462" />
      </files>
    
  2. このパッケージをパックしてから、他のプロジェクトに追加してテストします。正常に動作します。

19
Leo Liu-MSFT