什么';编写必须添加对旧框架程序集的引用的NuGet包的正确方法是什么?
我正在尝试编写一个可以添加到.NET4.0或4.5项目中的NuGet包。包中包含的实际程序集都是根据.net 3.5构建的,除了一个是根据.net 4.0构建的程序集之外,其他所有程序集都是根据.net 3.5构建的-我对此没有控制权,因此我必须使用“原样”的程序集 我正在处理的项目以.net 4.5.2为目标,需要引用这些“遗留”程序集。我已通过在我的App.config中包含以下内容启用了“旧版运行时激活”:什么';编写必须添加对旧框架程序集的引用的NuGet包的正确方法是什么?,nuget,nuspec,Nuget,Nuspec,我正在尝试编写一个可以添加到.NET4.0或4.5项目中的NuGet包。包中包含的实际程序集都是根据.net 3.5构建的,除了一个是根据.net 4.0构建的程序集之外,其他所有程序集都是根据.net 3.5构建的-我对此没有控制权,因此我必须使用“原样”的程序集 我正在处理的项目以.net 4.5.2为目标,需要引用这些“遗留”程序集。我已通过在我的App.config中包含以下内容启用了“旧版运行时激活”: <startup useLegacyV2RuntimeActivatio
<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项目中时,它将执行以下操作:
我想要的行为的正确写法是什么?如何使NuGet软件包确保App.config文件中存在
标记?对于引用组,NuGet将仅为一个组安装所有项目。如果存在更具体的匹配项,则在未指定任何框架的情况下不会安装组。如果项目的目标框架没有其他匹配项,则使用此默认组
此外,我可能不会在NuGet包中明确地以.NET 4.5.2为目标,除非.NET 4.0程序集仅以.NET 4.5.2为目标。如果它们与.NET4.0兼容,我会让它们以.NET4.0为目标
<group targetFramework="net35">
<reference file="NetFx35Assembly1.dll" />
<reference file="NetFx35Assembly2.dll" />
</group>
<group targetFramework="net40" >
<reference file="NetFx35Assembly1.dll" />
<reference file="NetFx35Assembly2.dll" />
<reference file="NetFx40Assembly.dll" />
</group>
注:以上等同于没有在元数据部分中定义引用,而只是使用:
<files>
<!-- .net 3.5 assemblies -->
<file src="NetFx35Assembly1.dll" target="lib\net35" />
<file src="NetFx35Assembly2.dll" target="lib\net35" />
<!-- .net 4.0 assemblies -->
<file src="NetFx35Assembly1.dll" target="lib\net40" />
<file src="NetFx35Assembly2.dll" target="lib\net40" />
<file src="NetFx40Assembly.dll" target="lib\net40" />
</files>
对于app.config文件,我将使用添加启动元素