Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# nuget软件包的目标框架注意事项?_C#_.net_Asp.net Mvc_Nuget - Fatal编程技术网

C# nuget软件包的目标框架注意事项?

C# nuget软件包的目标框架注意事项?,c#,.net,asp.net-mvc,nuget,C#,.net,Asp.net Mvc,Nuget,我对创建NuGet包的过程相当陌生。我最近通过NuGetPackageExplorer创建了一个NuGet包。“Package Metadata”视图有一个值为“Microsoft.CSharp(Any,Verion=0.0)”的“Framework Assembly References”部分。这是nuspec文件的外观: <?xml version="1.0" encoding="utf-8"?> <package xmlns="http://schemas.microso

我对创建NuGet包的过程相当陌生。我最近通过NuGetPackageExplorer创建了一个NuGet包。“Package Metadata”视图有一个值为“Microsoft.CSharp(Any,Verion=0.0)”的“Framework Assembly References”部分。这是nuspec文件的外观:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    <id>My.Cool.NuGet.Package</id>
    <version>1.0.2</version>
    <title></title>
    <authors>John Smith</authors>
    <owners>John Smith</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>My cool NuGet package</description>
    <frameworkAssemblies>
      <frameworkAssembly assemblyName="Microsoft.CSharp" />
    </frameworkAssemblies>
  </metadata>
</package>

我的.Cool.NuGet.Package
1.0.2
约翰·史密斯
约翰·史密斯
假的
我的酷NuGet套装
请解释以下维度的关系、依赖关系和约束:

  • NuGet包的源.NET项目的目标框架版本
  • nuspec文件的FrameworkAssembly部分
  • 安装NuGet包的项目的目标框架版本
上面nuspec中的frameworkAssembly值在NuGetPackageExplorer中显示如下:

程序集名称:Microsoft.CSharp

支持的框架:任意,版本=v0.0

这是否意味着NuGet软件包不受.NET framework版本的限制?是否存在我希望在本节中明确说明特定版本的场景?我问这个问题的原因是我昨天在一个MVC项目中安装了一个NuGet软件包,我遇到了一些奇怪的行为。具体而言:

  • NuGet软件包显示为已安装,并显示在引用列表中
  • 我能够将using指令添加到NuGet包的名称空间中

但是,当我尝试运行应用程序时,编译器显示了一个错误,即这些using指令的“未找到命名空间类型”。但是编译器错误消失了,但应用程序不会运行以前编译器错误的b/c。在我对MVC项目和NuGet软件包源项目的版本设置进行了修改之后,我能够绕过这个错误。因此,现在我试图了解关于目标框架需要考虑和配置的更精细的细节。

NuGET包的源项目的TrameFamework应该是安装它的项目所需要的最低框架版本。例如,如果您知道将有4.5和4.6框架中的项目,那么您将为包4.5创建源代码。您还可以将多个框架的多个构建放在一个包中。这是关于这一点的最新消息

安装包的项目的TargetFramework应大于或等于包的版本。因为框架的高版本与低版本兼容。它不应允许您安装不支持您在项目中使用的框架的软件包

FrameworkAssemblys部分仅定义包正在使用的框架程序集,以便自动添加引用。有关更多详细信息,请查看