在带有.NET核心和框架混合解决方案的Azure Devops中,蛋糕构建脚本失败

罗斯·古斯塔夫森

我的.NET服务器项目有一个蛋糕构建脚本,该脚本需要在新的Azure DevOps管道上构建。该脚本在本地可用,但不适用于Azure DevOps。造成这种情况的可能原因可能是我在.NET Core 2.1上构建了一个单元测试项目(xUnit),而解决方案中的所有其他项目都是.NET Framework 4.6.1(我们刚刚在xUnit项目中添加了我唯一的选项是将其添加为.NET Core项目)。

我写了我的蛋糕脚本,该脚本在本地有效。看起来像这样:

//Always lock down versions of tools so that we can ensure a tool works before upgrading instead of auto-upgrading.
#tool "nuget:?package=xunit.runner.console&version=2.4.1"
#tool "nuget:?package=ReportUnit&version=1.2.1"

var target = Argument("target", "Build");
var configuration = Argument("configuration", "Dev");
var solution = @".\MyCompany.MyProduct.IntegrationLayer.sln";
var report = Directory(@".\reports");
var xunitReport = report + Directory("xunit");

Task("Clean")
    .Does(() =>
{
    Information("Cleaning out directories {0} for {1}...", configuration, solution);
        CleanDirectories("./**/bin/" + configuration);
        CleanDirectories("./**/obj/" + configuration);
});

Task("Restore")
    .IsDependentOn("Clean")
    .Does(() =>
{
    //This can restore both .NET Core and Framework NuGet packages.
    Information("Restoring Nuget packages for {0}...", solution);
    DotNetCoreRestore();
});

Task("Build")
    .IsDependentOn("Restore")
    .Does(() =>
{
    //If we change all the projects and solution to .NET Core, then we will need to change this build call to DotNetCoreBuild().
    //Because we have a mixed solution (unit tests are .NET Core and all other projects are .NET Framework), we need to still use MSBuild.
    Information("Building solution {0} using the {1} configuration...", solution, configuration);
    MSBuild(solution, new MSBuildSettings {
        Configuration = configuration
    });
});

Task("UnitTests")
    .IsDependentOn("Build")
    .Does(() =>
{
    Information("Unit testing solution {0} using the {1} configuration...", solution, configuration);
    var projects = GetFiles("./UnitTests/*.csproj");
    foreach(var project in projects)
    {
        DotNetCoreTest(
            project.FullPath,
            new DotNetCoreTestSettings()
            {
                Configuration = configuration,
                NoBuild = true
            });
    }
});

Task("UnitTestsOnly")
    .Does(() =>
{
    Information("Unit testing solution {0} using the {1} configuration...", solution, configuration);
    var projects = GetFiles("./UnitTests/*.csproj");
    foreach(var project in projects)
    {
        DotNetCoreTest(
            project.FullPath,
            new DotNetCoreTestSettings()
            {
                Configuration = configuration,
                NoBuild = true
            });
    }
});

RunTarget(target);

现在,当我在Azure DevOps中运行此代码时,每个项目都会出现10个错误,类似于下面的示例:

"D:\a\1\s\PPIL\MyCompany.MyProduct.IntegrationLayer.sln" (Build target) (1) ->
"D:\a\1\s\PPIL\MC.MP.IL.DatabaseDataReset\MC.MP.IL.DatabaseDataReset.csproj" (default target) (11) ->
  D:\a\1\s\PPIL\MC.MP.IL.DatabaseDataReset\MC.MP.IL.DatabaseDataReset.csproj(123,5): error : This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is ..\packages\Microsoft.VisualStudio.SlowCheetah.3.1.66\build\Microsoft.VisualStudio.SlowCheetah.targets.

我不确定确切的问题。可能是因为我们有一个混合项目。可能是因为文件结构。我不知道需要在cake命令中设置哪些选项或设置以进行构建或还原。也可能是当我在本地运行时,它在Cake脚本的同一文件夹中运行,但是它似乎在我的仓库的根文件夹中运行,该文件夹是此解决方案的解决方案文件夹中的一个文件夹。

我的脚本哪里出问题了?我的还原步骤似乎很好,除了它只还原UnitTests项目(它确实取决于所有其他项目)。是还原吗?在构建或还原中是否缺少我的设置?提前致谢。

罗斯·古斯塔夫森

因此答案是,我获得了所有项目文件并在每个文件上运行“ NuGetRestore”方法,但.NET Core UnitTests项目除外然后,我可以运行DotNetCoreRestore方法,该方法仅还原.NET Core UnitTests项目。

我还发现我应该清理packages目录,因为这是一个好习惯。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Julia中的重叠数组-带有指针的解决方案?

来自分类Dev

如何容器化在同一解决方案中具有依赖项的 .net 核心应用程序?

来自分类Dev

在大型Visual Studio解决方案中,如何快速识别带有构建事件的项目?

来自分类Dev

带有Firebase框架错误的swiftUI ios应用程序在连接的设备上构建和运行的解决方案是什么?

来自分类Dev

带有本地构建项目的Maven依赖解决方案

来自分类Dev

带有多处理功能的python中IPC的优雅解决方案

来自分类Dev

C ++解决方案在带有未对齐地址错误的leetcode上失败,但在Visual Studio中运行

来自分类Dev

Azure DevOps 上的构建错误 - 由多个目标框架组成的解决方案

来自分类Dev

为什么将 .Net Standard 和 .Net Core 项目混合在一个解决方案中?

来自分类Dev

如果解决方案文件放错位置并且没有解决方案文件的备份,是否有任何方法/工具可以将构建文件更改为asp.net中的解决方案文件?

来自分类Dev

HTTP 错误 404.3 - 在带有 asp.net MVC 和 WebAPI 核心 2.1 的 Azure 中找不到

来自分类Dev

使用带有InMemoryDatabase的TestStartup引导TestServer失败(.Net核心)

来自分类Dev

Azure Pipeline-从具有项目依赖性的解决方案中构建一个项目

来自分类Dev

带有 DLL 的 Azure WebJobs:上传失败

来自分类Dev

使用VB.NET,如何将现有解决方案中的现有项目引入新解决方案中,从而使其完全驻留在新解决方案中?

来自分类Dev

带有和不带有_的Play框架中的奇怪行为

来自分类Dev

SSH和带有Python脚本的屏幕

来自分类Dev

带有“。”和“ source”的运行脚本

来自分类Dev

在一个ASP.NET MVC 5解决方案中具有单独的项目

来自分类常见问题

将.NET 4.5.2解决方案中的所有项目重新定位

来自分类Dev

现有 .NET Core MVC 解决方案中的 Angular 不起作用

来自分类Dev

在Azure Web角色中带有证书的HttpRequest失败

来自分类Dev

在一个解决方案中混合packageReference和packages.config?

来自分类Dev

在一个Android应用中混合使用AdMob和其他广告解决方案

来自分类Dev

在具有代理Ubuntu-16.04的azure-devops管道bash蛋糕任务中,获取## [错误] Bash以代码“ 1”退出

来自分类Dev

bash脚本中带有“”和()的数组之间的区别?

来自分类Dev

带有type = html和html实体的xml的scrapy xpath解决方案

来自分类Dev

带有type = html和html实体的xml的scrapy xpath解决方案

来自分类Dev

为带有子命令的命令和子命令请求的 argparse 解决方案

Related 相关文章

  1. 1

    Julia中的重叠数组-带有指针的解决方案?

  2. 2

    如何容器化在同一解决方案中具有依赖项的 .net 核心应用程序?

  3. 3

    在大型Visual Studio解决方案中,如何快速识别带有构建事件的项目?

  4. 4

    带有Firebase框架错误的swiftUI ios应用程序在连接的设备上构建和运行的解决方案是什么?

  5. 5

    带有本地构建项目的Maven依赖解决方案

  6. 6

    带有多处理功能的python中IPC的优雅解决方案

  7. 7

    C ++解决方案在带有未对齐地址错误的leetcode上失败,但在Visual Studio中运行

  8. 8

    Azure DevOps 上的构建错误 - 由多个目标框架组成的解决方案

  9. 9

    为什么将 .Net Standard 和 .Net Core 项目混合在一个解决方案中?

  10. 10

    如果解决方案文件放错位置并且没有解决方案文件的备份,是否有任何方法/工具可以将构建文件更改为asp.net中的解决方案文件?

  11. 11

    HTTP 错误 404.3 - 在带有 asp.net MVC 和 WebAPI 核心 2.1 的 Azure 中找不到

  12. 12

    使用带有InMemoryDatabase的TestStartup引导TestServer失败(.Net核心)

  13. 13

    Azure Pipeline-从具有项目依赖性的解决方案中构建一个项目

  14. 14

    带有 DLL 的 Azure WebJobs:上传失败

  15. 15

    使用VB.NET,如何将现有解决方案中的现有项目引入新解决方案中,从而使其完全驻留在新解决方案中?

  16. 16

    带有和不带有_的Play框架中的奇怪行为

  17. 17

    SSH和带有Python脚本的屏幕

  18. 18

    带有“。”和“ source”的运行脚本

  19. 19

    在一个ASP.NET MVC 5解决方案中具有单独的项目

  20. 20

    将.NET 4.5.2解决方案中的所有项目重新定位

  21. 21

    现有 .NET Core MVC 解决方案中的 Angular 不起作用

  22. 22

    在Azure Web角色中带有证书的HttpRequest失败

  23. 23

    在一个解决方案中混合packageReference和packages.config?

  24. 24

    在一个Android应用中混合使用AdMob和其他广告解决方案

  25. 25

    在具有代理Ubuntu-16.04的azure-devops管道bash蛋糕任务中,获取## [错误] Bash以代码“ 1”退出

  26. 26

    bash脚本中带有“”和()的数组之间的区别?

  27. 27

    带有type = html和html实体的xml的scrapy xpath解决方案

  28. 28

    带有type = html和html实体的xml的scrapy xpath解决方案

  29. 29

    为带有子命令的命令和子命令请求的 argparse 解决方案

热门标签

归档