我很难在服务器上部署带有nuget引用的第一个.net核心应用程序。在本地,该应用程序绝对可以正常运行(可以使用nuget包)。
显然,没有packages.config。我正在使用Dapper,Newtonsoft.Json等。项目在哪里存储对这些软件包的引用?没有包文件夹。
在solutions文件夹中,有nuget.config文件,由于某种原因该文件为空。
我应该在这里添加什么
答案 0 :(得分:1)
无法在服务器上部署带有nuget引用的应用程序
那是因为您在构建管道中使用了旧版本的nuget restore任务,该任务仅支持包管理类型packages.config
而不是PackageReference
。
这是旧版本任务要求您提供packages.config
路径的原因。 PackageReference
是后续产品,因此以前版本的nuget restore任务不支持它。
检查the blog了解更多详细信息。
要解决此问题,请使用nuget restore任务的 V2 :
注意:
PackageReference
需要nuget.exe 4.1及更高版本,请添加
NuGet tool installer安装4.1
以上版本的nuget版本。更新:
是的,使用TFS 2016
由于使用的是TFS 2016,因此可以尝试使用命令行来调用nuget.exe来还原软件包,而不是使用nuget安装程序任务:
从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