.net 4.0 または 4.5 プロジェクトに追加できる NuGet パッケージを作成しようとしています。パッケージに含まれる実際のアセンブリは、.net 4.0 に対してビルドされたものを除いて、すべて .net 3.5 に対してビルドされます。これを制御できないため、アセンブリを「そのまま」使用する必要があります。
私が取り組んでいるプロジェクトは.net 4.5.2をターゲットにしており、これらの「レガシー」アセンブリを参照する必要があります。App.config に次のように記述して、「レガシー ランタイム アクティベーション」を有効にしました。
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
</startup>
これはすべて十分に機能しているようです。ここで、「レガシー」アセンブリを NuGet パッケージにパッケージ化したいと考えています。私の .nuspec ファイルは次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<!-- many lines elided for clarity -->
<references>
<group>
<reference file="NetFx35Assembly1.dll" />
<reference file="NetFx35Assembly2.dll" />
</group>
<group targetFramework=".NETFramework4.5.2" >
<reference file="NetFx40Assembly.dll" />
</group>
</references>
</metadata>
<files>
<!-- .net 3.5 assemblies -->
<file src="NetFx35Assembly1.dll" target="lib\net35\NetFx35Assembly1.dll" />
<file src="NetFx35Assembly2.dll" target="lib\net35\NetFx35Assembly2.dll" />
<!-- .net 4.0 assemblies -->
<file src="NetFx40Assembly.dll" target="lib\net40\NetFx40Assembly.dll" />
</files>
</package>
このパッケージを .net 4.5.2 プロジェクトに追加すると、次のようになると予想していました。
- 3.5 アセンブリを参照します。これは、フレームワークが指定されていない「デフォルト」グループにあるためです。
- 4.5.2 をターゲットとするグループで指定されているため、4.0 アセンブリを参照します。
私が期待したように物事はうまくいきませんでした。私が実際に得たのは、4.0 アセンブリへの単一の参照でした。
必要な動作を作成する正しい方法は何ですか? <startup useLegacyV2RuntimeActivationPolicy="true">
タグが App.config ファイルに存在することを NuGet パッケージで確認するにはどうすればよいですか?