我发现Newtonsoft.Json图书馆抛出一个问题
System.IO.FileNotFoundException: Could not load file or assembly 'Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'. The system cannot find the file specified
Run Code Online (Sandbox Code Playgroud)
当将应用程序作为 Docker 容器运行时,我想知道为什么会发生这种情况以及为什么依赖关系管理不能顺利工作。
我使用.NET 5。
我有一个MyLibrary.A明确用于Newtonsoft.Json 13.0.1序列化和反序列化 json 的库。
我有一个不同的库MyLibrary.B来包装一个MassTransit.AmazonSQS库。此 MassTransit 库也使用 Newtonsoft.Json,但可能是不同的版本。如果我不做任何明确的事情,似乎 MassTransit 依赖项会显示Newtonsoft.Json 11.0.2. 如果MyLibrary.B我明确添加Newtonsoft.Json 13.0.1,即使我没有明确使用它,那么 MassTransit 似乎很乐意使用这个最新的Newtonsoft.Json 13.0.1
现在,我有一个MyApp使用MyLibrary.A和的网络应用程序MyLibrary.B。它在本地运行良好,但我使用 CI/CD 服务器来生成 Docker 映像。
现在,我将此 Docker 映像作为本地容器(作为 Docker Compose)启动,并收到错误
Unhandled exception. System.IO.FileNotFoundException: Could not load …Run Code Online (Sandbox Code Playgroud) 我面临一些声纳云警告的问题,这些警告在最近的将来不会得到解决(现在应该被禁用)。
这些警告是由 sonarcloud 在 CI 构建过程中发出的。没有任何本地分析器。有没有办法在项目、文件、类和/或方法级别上抑制源代码中的某些特定警告?
官方文档没有太大帮助,至少我没有找到解决方案。
sonarcloud是否尊重某些人
#pragma warning disable S3881
Run Code Online (Sandbox Code Playgroud)
或其他基于属性的方法或一些全局设置。
我最近安装了 Visual Studio 2022 预览版。
今天我在一个研讨会上,有一些功能不起作用,结果发现这是因为我安装了.NET 6 的预览版本。
所以我随后卸载了 Visual Studio 2022 预览版。
现在,当我在命令窗口中键入 dotnet --version (或其他命令,如 dotnet --info)时,我收到以下消息:
我尝试修复,然后重新安装DotNet SDK 5.0.400。也重启过几次机器,没有效果。
我猜测卸载程序删除了这些文件,但未能将注册表恢复到以前的版本。
我该如何解决?
我使用 Docker 来构建我的 .NET 应用程序,并使用Microsoft 提供的基础映像( mcr.microsoft.com/dotnet/core/sdk:3.1 )。
除了 .NET Core SDK 3.1 之外,我还需要同一容器内的 .NET Core SDK 2.2。
如何扩展基础映像并安装 .NET Core SDK 2.2,而不破坏基础映像中的版本?我注意到 Microsoft 不使用包管理器在基础映像中安装 .NET。
我在安装 .NET SDK 时遇到问题,起初当我进入 Visual Studio 2019 时,它说我缺少 dotnet 运行时 sdk,所以我按照它的要求安装了它并重新启动了我的计算机。然后我再次进入 Visual Studio 2019,出现了同样的问题,我进入命令提示符并输入dotnet --list-sdks并显示no sdks. 我已经安装了所有运行时,但它说没有找到 SDK。图片 。我尝试重新安装 sdks,但同样的问题仍然存在。我什至重新安装了 IIS。如果不解决此问题,我将无能为力,请尽快帮助!
我有一个包含大量项目的解决方案,自从我们切换到 .NET6 以来,该解决方案构建得很好,然后突然我在 Visual Studio 中为每个项目收到此警告,但是它不会出现在 MSBuild 输出中,并且设置了分析器在构建上运行。知道如何追踪为什么会发生这种情况吗?作为我将 NET SDK 项目与 .NET6 结合使用这一事实的一部分,分析器会自动包含在内,因此据我所知,没有 Nuget 包引用?
警告 CS8032 无法从 C:\Users\defaultuser\.nuget\packages\microsoft.codeanalysis.analyzers\3.0.0\analyzers\dotnet\cs\Microsoft 创建分析器 Microsoft.CodeAnalysis.CSharp.Analyzers.MetaAnalyzers.CSharpReportDiagnosticAnalyzer 的实例.CodeAnalysis.CSharp.Analyzers.dll:无法从程序集“Microsoft.CodeAnalysis.Analyzers,Version=3.3.5.2003,Culture=neutral,PublicKeyToken=31bf3856ad364e35”加载类型“Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers.ReportDiagnosticAnalyzer4”..
系统.TypeLoadException:无法从程序集 Microsoft.CodeAnalysis.Analyzers、Version=3.3.5.2003、Culture=neutral、PublicKeyToken=31bf3856ad364e35 加载类型 Microsoft.CodeAnalysis.Analyzers.MetaAnalyzers.ReportDiagnosticAnalyzer4。在 System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly 程序集、字符串名称、布尔型 throwOnError、布尔型ignoreCase、ObjectHandleOnStack 类型) 在 System.Reflection.RuntimeAssembly.GetType(字符串名称、布尔型 throwOnError、布尔型ignoreCase) 在 Microsoft.CodeAnalysis.Diagnostics.AnalyzerFileReference .Extensions`1.GetAnalyzersForTypeNames(程序集分析器Assembly,IEnumerable1分析器类型名称,布尔值&reportedError)
我有一个DOTNET SDK .sln(和build.proj)有<TargetFrameworks>netcoreapp2.1;net461</TargetFrameworks>。它使用 Visual Studio 和 构建在 Windows 上dotnet build,但我也希望它构建尽可能多的其他地方。我需要在我的 README.md 中放入什么和/或我可以在项目文件中放入什么以使其在 Mac 上的 Rider 和/或 bash 上构建?
我有一个 MVC 5 Web 项目(引用 Microsoft.AspNet.Mvc (5.2.8) 和 Microsoft.AspNet.WebApi.WebHost (5.2.8)),我想将项目文件转换为 SDK 样式。我知道这没有得到官方支持,但我听说它是可以管理的。此时将项目一路转换为.net core是不可取的。
以下是项目文件的代码片段。这是一个从 Visual Studio 创建的标准 MVC5 项目:
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>
</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{BC1FDFD9-8B07-49BB-811B-26BFF6D07084}</ProjectGuid>
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>WebApplication1</RootNamespace>
<AssemblyName>WebApplication1</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<UseIISExpress>true</UseIISExpress>
<Use64BitIISExpress />
<IISExpressSSLPort />
<IISExpressAnonymousAuthentication />
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
<UseGlobalApplicationHostFile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup> …Run Code Online (Sandbox Code Playgroud) 我按照这些说明在 Ubuntu 20.04 上安装 dotnet。
安装sdk Ubuntu 20.04
此时的指令是:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
sudo apt-get update && \ sudo apt-get install -y dotnet-sdk-6.0
现在我可以构建net6.0项目了。
然后我安装7
sudo apt install dotnet-sdk-7.0
然后,当我尝试构建我的 net6.0 项目时,我得到:
CSC : warning CS8034: Unable to load Analyzer assembly /usr/share/dotnet/sdk/7.0.200/Sdks/Microsoft.NET.Sdk.Web/analyzers/cs/Microsoft.AspNetCore.Analyzers.dll : Could not load file or assembly 'Microsoft.AspNetCore.Analyzers, Version=7.0.3.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. Access is denied.
Run Code Online (Sandbox Code Playgroud)
在许多其他程序集上也出现同样的错误。当我尝试构建 net6.0 项目时,我不应该收到有关 net7.0 程序集的错误。如果我将 csproj 中的目标框架更改为 net7.0,则会出现相同的错误。
但是,如果我添加 sudo,我仍然可以将我的项目构建为 net6.0 和 net7.0。这些权限是您所期望的:
ls -l /usr/share/dotnet/sdk/7.0.200/Sdks/Microsoft.NET.Sdk.Web/analyzers/cs/Microsoft.AspNetCore.Analyzers.dll
-rw-r--r-- 1 …Run Code Online (Sandbox Code Playgroud) 我已经成功安装了最新的 .NET SDK,但 Windows 无法识别它。这表现为以下故障之一:
dotnet --list-sdks 不包括最新的 .NET SDK。项目“MyProject”加载失败:未找到指定的 SDK“Microsoft.NET.Sdk”。
无法找到 .NET SDK。检查它是否已安装以及 global.json 中指定的版本(如果有)是否与安装的版本匹配
当前 .NET SDK 不支持面向 .NET Core NN 面向 .NET Core NM 或更低版本,或使用支持 .NET Core NN 的 .NET SDK 版本
如何让 Windows 识别最新安装的 .NET SDK 版本?