我对 .NET Standard 和最近宣布的 .NET Core 3.0 和 ASP.NET Core 3.1 有几个问题
之前版本的.NET Standard与正在发布的 .NET Core 具有相同的主要版本,但对于 .NET Core 3.1,兼容的是 .NET Standard 2.1。
我们是否将旧的 .NET Standard 类库的目标框架从:
<TargetFramework>netstandard2.0</TargetFramework>
Run Code Online (Sandbox Code Playgroud)
到
<TargetFramework>netstandard2.1</TargetFramework>
Run Code Online (Sandbox Code Playgroud)
或更改为
<TargetFramework>netcoreapp3.0</TargetFramework>
Run Code Online (Sandbox Code Playgroud)
并向 Microsoft.AspNetCore.App 添加 FrameworkReference
c# asp.net-core-mvc asp.net-core asp.net-core-3.0 .net-standard-2.1
.NET Standard不支持静态代码分析和代码契约吗?
VS 2017和.NET Standard 1.6或.NET核心类库似乎没有运行代码分析的选项.
我最近将 ASP.NET Core 2.2 Web API 项目迁移到 ASP.NET Core 3.1 Preview 3。我使用基于 URL 的 API 版本控制和 Swagger UI 3.0 (Swashbuckle.AspNetCore 5.0.0-rc4)。一旦 Web API 在 Azure 上发布,我就会收到以下错误(我不确定 Swagger UI 是否与它有关,但是......)
System.InvalidOperationException:无法比较数组中的两个元素。---> System.TypeLoadException:无法从程序集“Microsoft.AspNetCore.Mvc.Formatters.Json”加载类型“Microsoft.AspNetCore.Mvc.MvcJsonOptions”,
参考 Git Hub 中的类似问题,我的理解是该问题已通过预览版 3 解决,并且确实在安装 SDK 3.1.100-preview3 后,我在本地开发机器上看不到此问题。
本地开发机器(一切正常...)
发布到 Azure Web 服务
由于该框架尚不受支持,因此我将其发布为自包含 Web api 应用程序。发布成功,但我在运行时遇到以下问题...如何解决此问题?
System.InvalidOperationException: Failed to compare two elements in the array.
---> System.TypeLoadException: Could not load type 'Microsoft.AspNetCore.Mvc.MvcJsonOptions' from assembly 'Microsoft.AspNetCore.Mvc.Formatters.Json, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
at System.Signature.GetSignature(Void* pCorSig, Int32 cCorSig, RuntimeFieldHandleInternal fieldHandle, …Run Code Online (Sandbox Code Playgroud) azure swagger-ui asp.net-core-mvc asp.net-core asp.net-core-3.0
ASP.NET Core Web API 项目是使用 Swagger 配置的。当我在本地机器上运行项目时,launchUrl 正常工作并自动重定向到我的 Swagger apidocs 位置(https://localhost:44373/apidocs/index.html)
但是一旦我在 Azure 上发布项目,launchUrl 就不再正常工作。 ( https://myapiurl.com ) => 应该自动重定向到( https://myapiurl.com/apidocs/index.html )吗?
对于已发布的环境,我缺少什么?
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:60837",
"sslPort": 44373
}
},
"$schema": "http://json.schemastore.org/launchsettings.json",
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "apidocs",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production"
}
},
"Web.Apis.Organization": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "apidocs",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的配置方法 …
swagger-ui asp.net-core-mvc asp.net-core swagger-3.0 asp.net-core-3.1
我有一个 .NET 标准库 (1.4) VS 2017 项目,其中包含需要通过 Nuget 包分发的自定义 MS 构建任务 (MyTask)(比方说 MyCustomTask.dll,它包含将由目标导入的 MyTask 和 Portable.targets项目)
然后,目标 .NET Standard (1.4) 项目 cspro 文件使用带有自定义生成任务的 Nuget 包来导入调用自定义生成任务的 Portable.targets。
但是,此时我不断收到构建错误无法加载文件或程序集“System.Runtime,Version=4.1.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。
我尝试了 .NET Standard(1.4、1.5 和 1.6),但出现同样的错误。