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' 带来了另一个问题。但是我缺少 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 并重新构建项目对我有用。我离开了<TargetFramework>
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
文件中的 <RuntimeIdentifier>
丢失了。
添加它为我解决了这个问题:
<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]