ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json

Posted

技术标签:

【中文标题】ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json【英文标题】: 【发布时间】:2017-03-16 18:45:43 【问题描述】:

我想使用 VS 2017 简化我在 ASP.NET Core Web 应用程序 (.NET Framework) 应用程序中的配置。

我已经知道我的网站将在 x64 环境和 .NET 4.6.2 的 Windows/IIS 下运行。在可预见和不可预见的未来,此应用程序不可能使用从开发到生产的任何其他环境。

所以,我只需要 Debug x64 和 Release x64 模式。 (不需要 AnyCPU 和 x86!),所以我继续从项目中删除了所有其他配置。

现在,在编译时,我收到以下错误:

'C:\Projects\MyProject\My.Website\obj\project.assets.json' 没有 有一个“.NETFramework,Version=v4.6.2/win7-x64”的目标。

确保你 已为 TargetFramework='net462' 恢复了此项目,并且 运行时标识符='win7-x64'。 MD.Website C:\Program Files (x86)\微软视觉 Studio\2017\Enterprise\MSBuild\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.targets

我正在 Windows 7 上开发,我不知道如何解决这个问题。有什么想法吗?

【问题讨论】:

删除该文件并让VS生成一个新副本,看看它是否修复。 @LexLi 我应该提到我在发布之前尝试删除和重建以及所有故障排除内容。不,这不起作用:( 【参考方案1】:

由于某种原因,我的 .csproj 文件中的 <TargetFramework> 是单数。我添加了一个“s”,它变成了“TargetFrameworks”,它起作用了:

  <PropertyGroup>
    <TargetFrameworks>net462</TargetFrameworks>
    <RuntimeIdentifier>win7-x64</RuntimeIdentifier>
  </PropertyGroup>

【讨论】:

对我来说,我想这是从xproj 迁移到csproj 中的一个错误。您是否在使用 VS2017 创建新项目时遇到此问题,或者您是否也进行了迁移? 对我来说,添加 's' 带来了另一个问题。但是我缺少 所以我只是添加了它。 发生在我从 VS 15.3 升级到 15.4 的时候,然后就彻底失败了。添加“s”,然后编译并运行。 我认为这是因为更改为“TargetFrameworks”触发了正在恢复的 nuget 包。 另外你还需要运行dotnet restore,Tiago 在接下来也提到了这一点【参考方案2】:

我没有更改我的TargetFramework,我在包管理器控制台中运行了命令:

dotnet restore

它奏效了! (我正在使用 VS2017,我正在做一个指向 .net 框架的 .net 核心应用程序)

【讨论】:

谢谢!它对我有用。我有一个 asp.net 核心(.net 框架)应用程序。 来自 Microsoft 文档:从 .NET Core 2.0 开始,您不必运行 dotnet restore,因为它由所有需要还原的命令隐式运行,例如 dotnet new、dotnet build 和点网运行。在某些执行显式还原有意义的场景中,它仍然是一个有效的命令,例如 Visual Studio Team Services 中的持续集成构建或需要显式控制还原发生时间的构建系统。【参考方案3】:

我手动将我的从 x86 更改为 x64。在这种情况下,仅从 Visual Studio 恢复包是行不通的,但关闭 Visual Studio、删除 project.assets.json、重新启动 Visual Studio 并重新构建项目对我有用。我离开了&lt;TargetFramework&gt;singular。

命令行nuget restore ... 也可能有效。

【讨论】:

【参考方案4】:

我在将 dotnetcore 控制台应用程序升级到 2.0 版后尝试将其发布到本地文件夹时遇到了这个问题。

在尝试所有删除文件夹和 dotnet restore 并确保 Application 和 Build 中的所有设置均为 2_0 后无济于事。我意识到我的发布配置文件仍然以 1.1 为目标,即使在我进入编辑配置文件时 2.0 显示为选中状态,但它在发布摘要中显示为 1.1。所以我在下拉列表中重新选择了 2.0,它更新了摘要以显示 2.0,一切正常。

【讨论】:

在尝试了以上所有方法之后,这个答案对我有用。它实际上已经在 2.1 上,但不知何故进入发布设置并将其重置为 2.1 解决了这个问题,我成功发布了。 我需要打开一次“配置...”对话框 - 我的 2.2 已经存在,但我需要手动打开一次...【参考方案5】:

由于某种原因,我的 .csproj 文件中的 &lt;RuntimeIdentifier&gt; 丢失了。 添加它为我解决了这个问题:

<PropertyGroup>
  <TargetFramework>net472</TargetFramework>  
  <RuntimeIdentifier>win-x64</RuntimeIdentifier>      
  <Platforms>AnyCPU;x64</Platforms>
  <LangVersion>7.3</LangVersion>
</PropertyGroup>

【讨论】:

【参考方案6】:

我有一个 .net 核心应用程序指向 VS2017 中的 .net 框架 4.6.1,我试图发布它。我将平台目标从 x86 更改为 x64,并在尝试再次发布时开始出现此错误,但构建时没有任何问题。我刚刚打开了发布配置文件设置,一切看起来都很正常(目标运行时是 win7-x64),但这足以让我的发布开始正常工作。

【讨论】:

【参考方案7】:

检查您尝试运行的发布的实际发布配置文件。在我们的例子中,我们有一组项目必须在 Core 和常规 asp.net 之间共享,因此我们以 Core 1.1 为目标并将运行时版本设置为 4.6.1。在运行完所有项目并将它们更新到目标版本 4.7 后,我开始在发布时收到此错误(实际构建工作正常,本地主机调试也是如此,它是被顶起的发布)。

检查实际的“widgets - Web Deploy.pubxml”文件,我在底部找到了这个:

    <_DestinationType>AzureWebSite</_DestinationType>
    <TargetFramework>net461</TargetFramework>
    <RuntimeIdentifier>win7-x64</RuntimeIdentifier>
  </PropertyGroup>
</Project>

正如该线程上的其他人所提到的,在我的情况下,只需打开发布配置文件的属性表就会向您显示该框架的目标是 4.7(根据所涉及的项目是准确的,但并未反映实际情况)文件中的值)...我仍然需要单击“保存”按钮以使底层 .pubxml 文件实际更新为正确的值。如果您愿意,您也可以手动编辑该文件。

这个把我逼疯了。 :)

【讨论】:

【参考方案8】:

正如鲍里斯指出的那样,就我而言,问题出在 PublishProfiles 中。 首先,我在我的.csproj 文件中添加了以下内容(正如上面帖子中提到的 BluE):

<PropertyGroup>
  <TargetFramework>net472</TargetFramework>  
  <RuntimeIdentifier>win-x64</RuntimeIdentifier>      
  <Platforms>AnyCPU;x64</Platforms>
  <LangVersion>7.3</LangVersion>
</PropertyGroup>

然后我打开了我的 PublishProfile

然后点击编辑链接:

最后在打开的对话框中,将 TargetFramework 设置为您项目的 Framework,将 TargetRungime 设置为 win-x64,然后点击保存

就是这样! 现在,如果您尝试使用此配置文件发布您的项目,它应该可以完美运行。 希望它可以帮助某人。

【讨论】:

【参考方案9】:

对我来说,将 PlatformTarget 部分移动到常见的 PropertyGroup 修复了 Azure DevOps 构建中的相同问题:

不起作用:

<PropertyGroup>
    <TargetFramework>net461</TargetFramework>
    ...
    <Platforms>x64</Platforms>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    ...
    <PlatformTarget>x64</PlatformTarget>
</PropertyGroup>

作品:

<PropertyGroup>
    <TargetFramework>net461</TargetFramework>
    ...
    <Platforms>x64</Platforms>
    <PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    ...
</PropertyGroup>

【讨论】:

以上是关于ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json的主要内容,如果未能解决你的问题,请参考以下文章

在 asp.net core vs2015 update2 情况况下创建 asp.net core web application 的问题

asp.net core mvc 里的application中的start,end等事件

Application Insights - ASP.NET Core - Session_Id 为空

Asp.Net Core 发布异常 502.5 [The Application process failed to Start]

通过TeamCity实现ASP.NET Core Web Application的自动编译及发布

ASP.NET Core 运行原理剖析