Azure DevOps构建管道不包括所有NuGet包内容文件

Azure DevOps构建管道不包括所有NuGet包内容文件,azure,nuget,azure-pipelines,Azure,Nuget,Azure Pipelines,我正忙于为ASP.NET MVC应用程序创建Azure Devops构建管道,但我一直在恢复一些NuGet软件包 我决定将NuGet软件包安装添加的所有文件夹添加到.gitignore文件中。因为管道将在执行NuGet还原时复制此文件 不幸的是,对于我安装的一个NuGet软件包,这不起作用:预期的文件没有添加到我的工件中 当我在Visual Studio中手动安装此软件包时,NuGet将在App_Plugins/uSync文件夹中添加一个程序集和一些文件,但管道中的NuGet还原步骤没有:它只将

我正忙于为ASP.NET MVC应用程序创建Azure Devops构建管道,但我一直在恢复一些NuGet软件包

我决定将NuGet软件包安装添加的所有文件夹添加到.gitignore文件中。因为管道将在执行NuGet还原时复制此文件

不幸的是,对于我安装的一个NuGet软件包,这不起作用:预期的文件没有添加到我的工件中

当我在Visual Studio中手动安装此软件包时,NuGet将在App_Plugins/uSync文件夹中添加一个程序集和一些文件,但管道中的NuGet还原步骤没有:它只将程序集添加到最终工件中。缺少应用程序插件文件

下面是构建管道的my YAML表示:

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'artifact'
    publishLocation: 'Container'

非常感谢任何帮助

只是好奇,您的构建管道中使用的是哪个NuGet版本。根据,此版本的NuGet任务默认使用NuGet 4.1.0。要选择不同版本的NuGet,请使用。

With
packages.config
,还原与安装之间存在差异。安装时,允许修改项目,包括将文件从软件包复制到项目文件夹中。使用
restore
,NuGet不会修改项目,它只下载
nupkg
,并提取
packages
文件夹中的zip文件<代码>安装仅在Visual Studio中起作用,因为NuGet要求Visual Studio的项目系统修改项目文件(
csproj
vbproj
等等)。因此,只要您继续使用
packages.config
,就需要签入这些文件。啊,这很有意义!有没有办法在管道中执行此操作,而不是签入所需的文件?和。。根据您的解释,我希望此行为适用于我的所有NuGet软件包,但我的一些软件包已正确添加到工件:程序集和解决方案文件。如果您在安装新软件包后查看项目文件(csproj)(如果您使用源代码管理系统,您可以查看差异),您将看到它得到一个
,虽然您希望在恢复时将包内容文件复制到项目目录中,但内容文件通常用于填充配置文件默认值,然后对其进行修改(内容或名称更改、删除等)。如果NuGet restore重新创建它们,这些修改将丢失。因此,虽然它可以在您的用例中工作,但在其他用例中确实存在问题。另外,对于非SDK风格的项目,csproj需要修改为具有
。NuGet不知道如何做到这一点,但在安装时的VS中,NuGet会告诉VS这样做。出于这些原因,ASP.NET核心项目不再通过NuGet软件包带来web开发资产(js、css)。建议使用npm或libman。我不再从事web开发,因此我不知道将这些工具集成到非核心ASP.NET项目中有多容易。我没有指定特定的版本号。版本号重要吗?您可以执行一个简单的测试。从dev工作站的命令行(VS外部)运行
nuget.exe
,查看是否在
packages
文件夹下为
packages.config
文件中指定的所有包提取了所有必要的文件。比较DevOps还原任务中的行为。如果行为存在差异,则值得考虑在DevOps YAML文件中升级
nuget.exe
version。希望这有帮助。