Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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# 当Net Framework引用Net标准库时,无法加载文件或程序集_C#_.net_.net Core - Fatal编程技术网

C# 当Net Framework引用Net标准库时,无法加载文件或程序集

C# 当Net Framework引用Net标准库时,无法加载文件或程序集,c#,.net,.net-core,C#,.net,.net Core,我对netstandard非常陌生,我只是在运行调试模式时遇到了一个异常,即.Net Framework(控制台)引用了netstandard库 因此,我后来发现,如果我将System.IO.Ports从nuget安装到.Net Framework项目中,那么异常就会消失。但该库已经安装到netstandard项目中 因此,如果我使用另一个.NETFramework项目中的netstandard项目,我非常怀疑是否需要安装netstandard项目所需的所有库 我一定错过了什么,熟悉nets

我对netstandard非常陌生,我只是在运行调试模式时遇到了一个异常,即.Net Framework(控制台)引用了netstandard库

因此,我后来发现,如果我将System.IO.Ports从nuget安装到.Net Framework项目中,那么异常就会消失。但该库已经安装到netstandard项目中

因此,如果我使用另一个.NETFramework项目中的netstandard项目,我非常怀疑是否需要安装netstandard项目所需的所有库

我一定错过了什么,熟悉netstandard的人能给我一些关于它的见解吗


非常感谢您的投入

打开承载.Net标准库的.Net Framework项目的.csproj文件,并在第一个
中添加这一行,如下更改还原样式:

<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
PackageReference
查看Scott Hanselman的文章,了解问题的原因和修复方法

从文章中:

“完整”框架项目使用较旧的.csproj格式,默认情况下,它们使用package.config来管理依赖项。较新的项目可以引用包作为一级引用。因此,我们需要告诉此解决方案中的所有项目以“PackageReference”的形式管理和恢复其包

编辑:

在一个新项目中,这个修正对我来说非常有效。当我在新项目中恢复包之前将其应用于csproj时,nuget会获得正确的引用

将此应用于现有项目时,它不起作用。在.net标准类库中引用的库不是由nuget提取的,因此,它仍然会抛出相同的错误

要修复此问题,请尝试以下操作:

  • 打开csproj。你会注意到你的图书馆是这样的
  • 
    ..\packages\yournetstandardlibrary\lib\netstandard2.0\.dll
    
  • 删除该引用
  • 改为添加此引用
  • 
    1.0.1
    

    如果在VS中打开解决方案资源管理器并查看引用,则不会加载所有引用以保持可执行文件较小。通过转到“菜单:项目:添加引用:.Net”始终可以添加缺少的引用,并在安装网络库时选择Windows文件夹中的“缺少引用”。添加引用只会告诉编译器包含在构建中,而不会实际加载任何内容。System.IO.Ports是Net的一部分,而不是nuget。我在应用程序中也有相同的行为-安装在.Net标准类库项目中的包依赖项不会在使用.Net Core或.Net framework的应用程序中自动引用。我只是假设它是这样的,我需要在那里单独安装依赖项。是的,你必须手动添加引用。使用PackageReference后是否有任何副作用?创建新的.net项目并在其中托管库时,它对我来说很好。在将此修复应用于现有项目时,我遇到了相同的错误。
    <Reference Include="yournetstandardlibrary, Version=1.0.1.0, Culture=neutral, processorArchitecture=MSIL">
          <HintPath>..\packages\yournetstandardlibrary\lib\netstandard2.0\.dll</HintPath>
        </Reference>
    
     <ItemGroup>
         <PackageReference Include="yournetstandardlibrary">
           <Version>1.0.1</Version>
         </PackageReference>   
      </ItemGroup>