子项目上的工件MSBuild NuGet插件依赖项



我正在使用ArtiFactory MsBuild插件发布到持续集成构建的NuGet存储库中。

问题是,当我创建一个使用NuGet包的新项目时,它也会删除ArtiFactory插件及其依赖项。项目代码不使用ArtiFactory,只使用构建过程。

如何更改我的包以不包括Artifactory插件及其依赖项?

我曾尝试从正在发布的项目中删除artifactory存储库,但在CI生成时失败,因为运行MsBuild任务需要artifactory,并且生成失败。

这里有两个问题的解决方案:

  • 由于Artifactory插件是按照每个解决方案安装的,因此您可以在其中创建一个新项目,为该项目安装插件,并将该项目的部署标志设置为false。通过这种方式,插件将被安装,但插件的工件不会被上传
  • 另一个(更明确的解决方案)是使用排除模式来排除artifactory dll及其依赖项

我使用了以下解决方案:

  1. 将文件从$(Solution目录)\packages\Artifactory.1.0.0\lib\net45复制到$(Solutiondirectory.Artifactory
  2. 在Visual Studio解决方案中,将3个dll作为现有文件添加到.artifactory解决方案目录中
  3. 编辑.artifactory\Deploy.targets文件并替换以下行:(第14行附近)

a。

<UsingTask TaskName="JFrog.Artifactory.ArtifactoryBuild" AssemblyFile="$(solutionDir)packagesArtifactory.$(pluginVersion)libnet45JFrog.Artifactory.dll" />

带有

b。<UsingTask TaskName="JFrog.Artifactory.ArtifactoryBuild" AssemblyFile="$(solutionDir).artifactoryJFrog.Artifactory.dll" />

  1. 从项目中删除对JFrog.Artifactory.dll、Microsoft.Web.XmlTransoform.dll和NuGet.Core.dll的引用
  2. 从packages.config中删除JFrog.Artifactory.dll、Microsoft.Web.XmlTransoform.dll和NuGet.Core.dll的引用
  3. 从.nuspec文件中删除依赖项

最新更新