特定のプラットフォーム用のライブラリを構築する必要がある CefSharp に依存するライブラリを作成しました。したがって、AnyCPU のサポートはありません。
これを NuGet にパックしたいと思います。私が理解している限りでは、これらのファイルをビルド フォルダーに配置し、.targets参照する正しい dll を選択するファイルを用意する必要があります。したがって、最終的には次のような NuGet パッケージになりました。
lib
monodroid
MyLib.dll
xamarin.ios10
MyLib.dll
net45
MyLib.dll (x86)
build
net45
x86
MyLib.dll (x86)
x64
MyLib.dll (x64)
MyLib.targets
.targetsファイル内に次のように記述します。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="PlatformCheck" BeforeTargets="InjectReference"
Condition="(('$(Platform)' != 'x86') AND ('$(Platform)' != 'x64'))">
<Error Text="$(MSBuildThisFileName) does not work correctly on '$(Platform)' platform. You need to specify platform (x86 or x64)." />
</Target>
<Target Name="InjectReference" BeforeTargets="ResolveAssemblyReferences">
<ItemGroup Condition="'$(Platform)' == 'x86' or '$(Platform)' == 'x64'">
<Reference Include="MyLib">
<HintPath>$(MSBuildThisFileDirectory)$(Platform)\MyLib.dll</HintPath>
</Reference>
</ItemGroup>
</Target>
</Project>
ここまでは順調ですね。今問題に。この NuGet を新しい WPF プロジェクトに追加すると、ライブラリへの参照が次の.csprojようにファイルに表示されます。
<Reference Include="MyLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d64412599724c860, processorArchitecture=x86">
<HintPath>..\packages\MyLib.0.0.1\lib\net45\MyLib.dll</HintPath>
<Private>True</Private>
</Reference>
.targetsファイルについては何も言及されていませんが。これはまだ NuGet 3 で行う方法ですか? 私は何か間違ったことをしましたか?現在、x86 ライブラリへの参照が原因で、x64 を実行している場合、これは実行時に失敗します。