【问题标题】:Build Template for ASP.NET Core (.NET 4.6.2)为 ASP.NET Core (.NET 4.6.2) 构建模板
【发布时间】:2016-11-08 14:51:40
【问题描述】:

在 VSTS 上,我正在尝试为面向 .NET Framework 4.6.2 的 ASP.NET Core 应用程序定义构建定义

我在 VSTS Build 上看到这两个模板,但不确定两者之间的区别以及我应该使用哪一个。

我都试过了,得到了不同的错误。哪个构建模板对我来说是一个好的开始?我的应用程序目前是一个非常简单的“Hello World”应用程序,但它确实有几个类库项目。我这样做是为了模拟我的应用完成后的样子。

所以,我的解决方案如下所示:

-- ASP.NET Core 应用程序(面向 .NET 4.6.2)

-- 类库 1(面向 .NET 4.6.2)

-- 类库 2(面向 .NET 4.6.2)

两个类库都是经典类型——见下文

更新: 我尝试关注这篇文章,这篇文章实际上是针对基于 .Net Core 构建的 ASP.NET 解决方案。

https://www.visualstudio.com/en-gb/docs/build/apps/aspnet/aspnetcore-to-azure

但是,我在第 2 步中遇到错误:dotnet restore:

Errors in C:\a\1\s\Dev\src\MyProject\project.json
2016-11-07T17:17:33.3792225Z     Unable to resolve 'ClassLibrary1' for '.NETFramework,Version=v4.6.2'.
2016-11-07T17:17:33.3792225Z     Unable to resolve 'ClassLibrary2' for '.NETFramework,Version=v4.6.2'

我需要进行哪些修改才能将这些步骤应用于我的项目?

更新 2: 这是我的 project.json 文件

{
  "dependencies": {
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Routing": "1.0.1",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0"
  },

  "tools": {
    "BundlerMinifier.Core": "2.0.238",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "net462": {
      "dependencies": {
        "ClassLibrary1": {
          "target": "project"
        },
        "ClassLibrary2": {
          "target": "project"
        }
      }
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "**/*.cshtml",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "prepublish": [ ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

更新 3: 这是构建定义中的当前任务集。这直接来自 ASP.NET Build (PREVIEW),除了我删除了测试步骤并将 NuGet 版本更改为 3.5.0 - build 1938 (rc2)。此外,MSBuild 参数如下:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"

【问题讨论】:

  • 根据错误信息,错误在project.json中。分享您的 project.json 的详细代码。您是否将 ClassLibrary1 和 ClassLibrary2 引用添加到 .net 核心项目?目标框架不兼容,你是怎么添加引用的。
  • 刚刚将我的 project.json 文件添加到原始帖子中。它是一个 ASP.NET Core 应用程序,但它以完整的 .NET Framework 为目标。我通过“参考”添加项目,Visual Studio 自动将它们添加到 project.json。
  • 您是如何创建面向 4.6.2 的 .Net Core 项目的,您提供的 project.json 文件在我这边不起作用。
  • 使用 Visual Studio 2015 Update 3 和所有最新更新简单地创建了一个针对 .Net 框架的全新 ASP.NET Core 项目。

标签: asp.net-core azure-devops


【解决方案1】:

Dotnet restore 命令无法恢复本地项目依赖项。更多信息,可以参考this线程。

我的步骤:

  1. 使用 ASP.NET 构建 (PREVIEW) 模板创建构建定义
  2. 将块版本更改为 3.5.0

注意:Hosted Build Agent 包含 .Net Core 1.0 和 Preview 2 Tooling,因此您需要使用相应版本的 SDK。

global.json:

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "1.0.0-preview2-003121"
  }
}

【讨论】:

  • 我是否使用 .Net Core 1.0?解决方案中的所有项目都使用完整的 .Net Framework 4.6.2
  • 在 dotnet restore 中仍然给我同样的错误,即无法解析类库。
  • @Sam Dotnet restore 无法恢复本地项目引用,使用 Nuget 3.5 可以解决此问题。我更新了我的答案。
  • 进行更改后,构建成功但不会产生任何工件。消息如下:目录 'C:\a\1\a' 为空。不会添加任何内容来构建工件“drop”。
  • 我刚刚更新了原始帖子,并在我的构建定义中添加了当前任务的屏幕截图。
猜你喜欢
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多