无法在服务器上部署带有nuget引用的应用程序

时间:2019-12-10 20:05:37

标签: azure asp.net-core azure-devops nuget

我很难在服务器上部署带有nuget引用的第一个.net核心应用程序。在本地,该应用程序绝对可以正常运行(可以使用nuget包)。

显然,没有packages.config。我正在使用Dapper,Newtonsoft.Json等。项目在哪里存储对这些软件包的引用?没有包文件夹。

在solutions文件夹中,有nuget.config文件,由于某种原因该文件为空。

我应该在这里添加什么

enter image description here

3 个答案:

答案 0 :(得分:1)

  

无法在服务器上部署带有nuget引用的应用程序

那是因为您在构建管道中使用了旧版本的nuget restore任务,该任务仅支持包管理类型packages.config而不是PackageReference

这是旧版本任务要求您提供packages.config路径的原因。 PackageReference是后续产品,因此以前版本的nuget restore任务不支持它。

检查the blog了解更多详细信息。

要解决此问题,请使用nuget restore任务的 V2

enter image description here

注意:

  • PackageReference需要nuget.exe 4.1及更高版本,请添加 NuGet tool installer安装4.1以上版本的nuget版本。
  • 使用.NET Core还原任务也可以解决此问题。

更新

  

是的,使用TFS 2016

由于使用的是TFS 2016,因此可以尝试使用命令行来调用nuget.exe来还原软件包,而不是使用nuget安装程序任务:

enter image description here

从nuget.org下载4.0以上的nuget.exe,然后在TFS服务器上进行设置。

希望这会有所帮助。

答案 1 :(得分:0)

您需要创建一个NuGet.config文件,该文件指向您正在使用的任何NuGet提要,将其添加到源代码管理中,并在构建中引用它。我将以官方供稿为例。如果您正在使用Visual Studio开发,则默认情况下此提要已经存在,这可能解释了为什么在本地运行生成而不在Azure DevOps上运行。

至少,您的NuGet.config文件需要如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="NuGet.org Feed" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
</configuration>

在.NET Core中,程序包现在全局存储在您的User目录中。 packages.config已被替换为支持项目文件中的PackageReference节点,因此请检查您的csproj以查看您正在引用的NuGet。

答案 2 :(得分:0)

您应该使用任务dotnetcorecli具有

的任务
#command: 'build' # Options: build, push, pack, publish, restore, run, test, custom