在.net核心框架2.1.4发布之前,我开始开发一个新网站,我们的生产环境都设置了“即将推出”页面等。
由于该服务器托管其他站点,因此我们不希望重新启动以升级到2.1.4,因此我使用以下方式更新了csproj文件:
<RuntimeFrameworkVersion>2.1.3</RuntimeFrameworkVersion>
我还检查了Microsoft.NETCore.App的NuGet软件包,并将其设置为2.1.3
但是,当我发布网站并将其复制到主机上的文件夹时,它仍然会记录
找不到任何兼容的框架版本 指定的框架'Microsoft.NETCore.App',版本'2.1.4'不是 找到了。 -检查应用程序依赖性并确定安装在以下位置的框架版本: “路径” -安装.NET Core必备软件可能有助于解决此问题: http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409 -.NET Core框架和SDK可以从以下位置安装: https://aka.ms/dotnet-download -已安装以下版本: 1.0.4位于[C:\ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] 1.1.1位于[C:\ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] 2.1.2位于[C:\ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] 2.1.3位于[C:\ Program Files \ dotnet \ shared \ Microsoft.NETCore.App]
我不知所措,如何将这个项目更改为目标2.1.3而不是2.1.4?
CSProj:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeFrameworkVersion>2.1.3</RuntimeFrameworkVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.3" />
<PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.0.8.18" />
</ItemGroup>
</Project>
VS中Nuget依赖项的屏幕截图: Screenshot of Dependencies in VS
答案 0 :(得分:0)
在我看来,在项目中更改NetCore版本唯一需要做的就是更改版本之间的csproj,例如,这是在2.1.4中运行的一个外部项目的csproj:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
</PropertyGroup>
<ItemGroup>
<Compile Remove="wwwroot\**" />
<Content Remove="wwwroot\**" />
<EmbeddedResource Remove="wwwroot\**" />
<None Remove="wwwroot\**" />
</ItemGroup>
<ItemGroup>
...
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.4" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="2.1.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.4" />
...
</ItemGroup>
...
</Project>
我们只需更改两个依赖项就可以将其降级为2.1.3
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.3" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.3" />
我可以看到我们没有使用您的指令<RuntimeFrameworkVersion>2.1.3</RuntimeFrameworkVersion>
我不知道这有什么不同。
另一方面,知道您想返回的原因会很有趣,因为上次更新没有重大更改,这是非常必要的,因为它要fix a vulnerability可能会导致您出现DOS。
由于点网核心的更新周期将在很短的时间内,并且停机确实是一个令人担忧的问题,因此我也强烈建议您开始使用Docker,这样可以允许您运行多个环境( 2.1,2.1.2 ...)在同一个docker中。
我们甚至遇到了核心2.1的错误,因此我们正在运行一个单独的容器,该核心仅在net core 2.0中具有一个功能,而我们的应用很乐意在与2.1.4中的应用相同的服务器中运行
此外,请确保进行清理并构建,您甚至可以尝试手动删除obj和bin文件夹,只是要确保没有引起您该错误的内容
答案 1 :(得分:0)
尝试降级2天后,我决定在客户下班时间继续工作并将2.1.4部署到生产服务器,我知道这在技术上不是“答案”,但这是我唯一可以解决的方法需要在4天的时间范围内部署该问题。