在Teamcity上构建混合解决方案(.NET Framework和.NET Core)时找不到软件包

时间:2018-07-10 10:38:38

标签: .net visual-studio .net-core teamcity

我有一个解决方案,其中包含针对.NET Framework 4.6.1的项目和针对.NET Core 2.0的单个项目。 该.Net Core项目引用了针对.NET Framework 4.6.1的项目。

在本地,使用Visual Studio 2017社区,我可以毫无问题地构建此解决方案。

我正在尝试使用以下步骤配置TeamCity构建:
1-清洁软件包文件夹
2-获取软件包:运行程序类型= NuGet安装程序,还原模式=恢复
3-还原:dotnet还原MyDonetCoreProject.csproj
4-构建解决方案:运行程序类型= VS 2017的Visual Studio(sln)

编译.NET Core项目时出现编译错误:

  

C:\ Program Files \ dotnet \ sdk \ 2.1.301 \ Sdks \ Microsoft.NET.Sdk \ targets \ Microsoft.PackageDependencyResolution.targets(198,5):未找到包Microsoft.AspNetCore 2.0.3版。自从NuGet恢复以来,它可能已被删除。否则,NuGet还原可能仅部分完成,这可能是由于最大路径长度限制所致。

我在TeamCity服务器上检查了路径C:\Users\MyUser\.nuget\packages\microsoft.aspnetcore,并且有一个文件夹2.0.3

我的解决方案中没有与此包有关的任何参考。该包装的外观和外观如何?

3 个答案:

答案 0 :(得分:0)

为什么不使用.NetCore CLI命令来构建.NetCore应用程序或库。但是同时,在构建代理程序上应该同时具有.NetCore 2.0和.NET Framework 4.6.1。 我对TeamCity CI不熟悉,可以尝试一下,

代替步骤<< 4-构建解决方案:运行程序类型= VS 2017的Visual Studio(sln)>>

dotnet构建[.NetCore的.csproj]

https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-build?tabs=netcore2x

您可以考虑使用.net标准(作为目标),而不是使用适用于特定框架版本的标签。

答案 1 :(得分:0)

我通过以下构建过程设法解决了此问题:

1-还原nugets::使用还原模式“还原(需要NuGet 2.7+),并在“软件包源”字段中指定所有软件包源(即使您的解决方案中有NuGet.config文件)并将“更新模式”设置为“通过解决方案文件更新”

2-构建解决方案:将“运行器类型”设置为“ .NET CLI(dotnet)”,将“命令”设置为“构建”

我不记得为什么必须删除清洁步骤,但这对我有用。

答案 2 :(得分:0)

在我的情况下,问题的原因是在TeamCity中设置的NuGet的旧版本。我使用的版本3.4.3使用的MSBuild 14.0不支持新的csproj文件。这是我的构建代理的日志:

jQuery(document).ready(function( $ ){
    var iframeDOM = $('iframe').contents();
    var node = iframeDOM.find('.shopify-buy__product__actual-price').html('<p>Starting at</p>');
});

将NuGet版本更改为4.7.1解决了该问题。这个主题对我有帮助:enter image description here