【问题标题】:ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.jsonASP.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 我应该提到我在发布之前尝试删除和重建以及所有故障排除内容。不,这不起作用:(

标签: c# msbuild asp.net-core visual-studio-2017 project.json


【解决方案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>
            

            【讨论】:

              猜你喜欢
              • 2017-04-05
              • 1970-01-01
              • 2017-10-12
              • 2016-10-07
              • 2017-04-24
              • 2021-07-10
              • 2022-12-27
              • 2016-11-08
              • 2017-12-24
              相关资源
              最近更新 更多