NuGetパッケージには、1つのマネージドDLLと多数のネイティブDLLが含まれています。管理対象DLLは、pinvokeを使用してネイティブDLLを呼び出します。私は正常に次のディレクトリ構造とNuGetパッケージにすべてをパッケージ化している:私はこれまで説明してきたこのNuGetパッケージのインストール時にネイティブDLLがインポートされない
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<NativeLibs Include="$(MSBuildThisFileDirectory)*.*" />
<None Include="@(NativeLibs)">
<Link>%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
すべては命令がhereを見つけ、次のように
lib
Managed.dll
build
Unmanaged1.dll
Unmanaged2.dll
MyNuGetID.targets
は私の.targetsファイルが見えます。私が読んだところでは、Visual StudioがこのNuGetパッケージをインストールするときに、.csprojファイルに ".txt"ファイルを読み込んですべてのアンマネージドDLLを私のbin\Debug
ディレクトリにコピーする "プロジェクトのインポート"セクションを挿入する必要があります。私は過去にVisual Studio 2015を使用してこれを成功させましたが、何らかの理由でVisual Studio 2012を使用している私の現在の設定では機能しません。私のNuGetパッケージがインストールされ、Reference Include=Managed...
セクションが.csprojファイルに追加されますが、.targetsファイルは決してImport
であり、アンマネージDLLはコピーされません。
注:
- マイ.targetsファイルには、私のNuGetパッケージIDと同じ名前を持っています。
- 私のVisual Studioのインストール は、私は、問題は、Visual StudioやNuGetの私のバージョンに関係する 何かを持っている疑いがあるNuGetバージョン2.0
- を使用しています。
私はちょうどビルドディレクトリの.targetsファイルの自動インポート機能が、リリースノートに従ってNuGetバージョン2.5まで追加されていないことを発見しました。https://docs.microsoft.com/en-us/nuget/release-notes/nuget -2.5 – agruwell