奇怪的构建错误.Net核心项目

时间:2017-02-18 00:10:30

标签: c# .net visual-studio asp.net-core .net-core

安装在我的机器上是:

  • Visual Studio Pro 2015
  • Visual Studio 2015 Update 3
  • .NET Core 1.0.1工具预览2

注意:在Windows 10计算机和Windows 7计算机上发生构建错误,但构建在另一台Windows 7计算机上运行。

所以我从另一个开发人员那里克隆了一个.Net Core项目,当我尝试在Visual Studio 2015中构建时,我收到了错误

“系统找不到Microsoft.DotNet.Common.Targets第262行中指定的文件”

转到C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ DotNet \ Microsoft.DotNet.Common.Targets第262行中的第262行我看到了

    <Dnx
  RuntimeExe="$(SDKToolingExe)"
  Condition="'$(_DesignTimeHostBuild)' != 'true'"
  ProjectFolder="$(MSBuildProjectDirectory)"
  Arguments="$(_BuildArguments)"
  />

如果从Microsoft.DotNet.Common.Targets项目构建中删除此部分。

我知道dnx是旧的.Net Core工具,我的猜测是project.json中的类库是遗留给旧的dnx工具和我安装的新的1.0.1 Preview 2 .Net Core工具将遗留的project.json条目推迟到Microsoft.DotNet.Common.Targets中的旧dnx工具条目,但由于我没有安装dnx工具,构建失败,当然,这只是猜测。

我在网上广泛搜索过这个问题,我found an article说明"type": "platform" Microsoft.NETCore.App依赖于project.json,但我没有使用该依赖项,我尝试添加{ {1}}我的"type": "platform"依赖,但没有帮助,这是我的project.json:

"NETStandard.Library"

这是构建输出:

{
  "version": "1.0.1-*",

  "dependencies":
  {
    "Microsoft.AspNetCore.Mvc.Abstractions": "1.1.0",
    "Microsoft.AspNetCore.Mvc.Core": "1.1.0",
    "NETStandard.Library": "1.6.1",
    "TSO.ProductItemList.Model": "1.0.2"
  },

  "frameworks":
  {
    "netstandard1.6":
    {
      "imports": "dnxcore50"
    }
  },

  "scripts":
  {
    "postcompile":
    [
      "dotnet pack --no-build --configuration %compile:Configuration%",
      "\"C:\\Program Files (x86)\\NuGet\\nuget\" push \"%project:Directory%\\bin\\%compile:Configuration%\\%project:Name%.%project:Version%.nupkg\" -s http://foo/NugetServer/ -apikey testkey"
    ]
  }
}

3 个答案:

答案 0 :(得分:10)

错误消息完全是误导性的,将我的postcompile cmd作为nuget包发布到我自己的nuget服务器失败了:

  "scripts":
  {
    "postcompile":
    [
      "dotnet pack --no-build --configuration %compile:Configuration%",
      "\"C:\\Program Files (x86)\\NuGet\\nuget\" push \"%project:Directory%\\bin\\%compile:Configuration%\\%project:Name%.%project:Version%.nupkg\" -s http://foo/NugetServer/ -apikey testkey"
    ]
  }

该cmd正试图致电C:\Program Files (x86)\NuGet\nuget.exe

正如我所说,我克隆了这个项目而没有创建它,创建项目的开发人员安装了C:\Program Files (x86)\NuGet\nuget.exe

我只有C:\Program Files (x86)\NuGet,没有nuget.exe,该文件夹已存在,因为我安装了Visual Studio 2015 nuget扩展程序并且.vsix文件存在但没有nuget.exe。

我只是下载了nuget.exe here最新版本(v3.5.0),并放置在我的postcompile cmd预期的位置:C:\ Program Files(x86)\ NuGet < / p>

答案 1 :(得分:0)

试试这个......

  1. 关闭Visual Studio
  2. 下载1.1 SDK,https://www.microsoft.com/net/core#windowscmd
  3. 在Visual Studio中重新打开项目
  4. 删除project.lock.json(等待恢复)
  5. 重建

答案 2 :(得分:0)

我制作了场景。 您可以完全还原该软件包。 按照步骤: 右键单击Project->单击Resotre Packages 并检查您的输出。

希望这可以解决您的问题。