首页 > 解决方案 > 如何明确确保我的恢复、构建和发布设置在 .Net Core 中是一致的?

问题描述

我运行以下命令:

 "C:\Program Files\dotnet\dotnet.exe" new console

我收到以下错误:

C:\Temp\myapp\myapp\myapp.csproj : warning NU1603: myapp depends on 
Microsoft.NETCore.App (>= 2.1.0) but Microsoft.NETCore.App 2.1.0 was not found. 
An approximate best match of Microsoft.NETCore.App 2.1.1 was resolved.

C:\Temp\myapp\myapp\myapp.csproj : error : The project was restored using 
Microsoft.NETCore.App version 2.1.1, but with current settings, version 2.1.0 
would be used instead.  To resolve this issue, make sure the same settings 
are used for restore and for subsequent operations such as build or publish.  
Typically this issue can occur if the RuntimeIdentifier property is set 
during build or publish but not during restore.

当我运行 dotnet --info 时,我得到以下信息:

.NET Core SDK (reflecting any global.json):
 Version:   2.1.301
 Commit:    59524873d6

 Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.17134
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\2.1.301\

Host (useful for support):
Version: 2.1.1
Commit:  6985b9f684

.NET Core SDKs installed:
 2.1.201 [C:\Program Files\dotnet\sdk]
 2.1.301 [C:\Program Files\dotnet\sdk]

 .NET Core runtimes installed:
 Microsoft.AspNetCore.All 2.1.1 [C:\Program 
 Files\dotnet\shared\Microsoft.AspNetCore.All]
 Microsoft.AspNetCore.App 2.1.1 [C:\Program 
 Files\dotnet\shared\Microsoft.AspNetCore.App]
 Microsoft.NETCore.App 2.0.7 [C:\Program 
 Files\dotnet\shared\Microsoft.NETCore.App]
 Microsoft.NETCore.App 2.1.1 [C:\Program 
 Files\dotnet\shared\Microsoft.NETCore.App]

 To install additional .NET Core runtimes or SDKs:
 https://aka.ms/dotnet-download

最后在生成的 myapp.csproj 文件中:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>
</Project>

我在网上搜索过,似乎很多人都有同样的问题。我很好奇发生了什么以及如何解决它。我猜我可以在我的 CLI 命令中更加明确,但我不确定如何以及明确说明什么。

更复杂的是,我认为我可以安装 Visual Studio 2017 并查看它如何构建 Dotnet Core 控制台应用程序。我认为它会安装所有必要的依赖项,并以一种可以正常工作的方式为项目构建文件。

我很惊讶地看到 csproj 文件使用 1.1 作为目标框架:

<Project Sdk="Microsoft.NET.Sdk">
 <PropertyGroup>
  <OutputType>Exe</OutputType>
  <TargetFramework>netcoreapp1.1</TargetFramework>
 </PropertyGroup>
</Project>

我遇到了许多构建错误,包括:

    Unable to find package Microsoft.NETCore.App with version (>= 1.1.2)
    - Found 1 version(s) in Microsoft Visual Studio Offline Packages [ 
    Nearest version: 1.0.0-rc2-3002702 ]
    - Found 0 version(s) in MyDownloads ConsoleApp1  
    C:\Users\admin\Source\Repos\ConsoleApp1\ConsoleApp1\ConsoleApp1.csproj  1   

更新

我重新安装了 .NET Core SDK 2.1 x86 和 x64。我在 Visual Studio 2017 中创建了一个新的 .NET 控制台应用程序。它不会构建。我收到以下错误:

Assets file not found project.assets.json.  Run a nuget restore to create file.  

nuget 还原运行时没有错误,但不会创建此类文件。

我从命令行构建了相同的项目,并创建了 project.assets.json 并且项目构建并运行。我的 Visual Studio 实例具有最新更新。我的 Visual Studio 实例中有什么损坏或丢失?

标签: c#.net.net-core

解决方案


前几天我遇到了这些问题。我通过将我的构建配置和 CPU 架构与我正在发布的配置相匹配来解决这个问题。

微软也在文档中讨论了这个问题

他们指定您首先使用预期的配置构建,然后使用no-restore选项发布

dotnet publish --no-restore -r win10-x64

编辑 我认为你需要更新你的 csproj 文件

 <TargetFramework>netcoreapp2.1.1</TargetFramework>
<PlatformTarget>AnyCPU</PlatformTarget>
 <RuntimeIdentifier>win-x64</RuntimeIdentifier>

如果这不起作用,您可以尝试一些解决方案。您可以创建一个global.json来指定哪个 SDK 版本:

{
    "sdk": { "version": "2.1.300" }
}

如果这不起作用,还有其他一些可能有帮助的解决方案,您可以在github上的这个问题中找到它们。


推荐阅读