我正在使用ArtiFactory MsBuild插件发布到持续集成构建的NuGet存储库中。
问题是,当我创建一个使用NuGet包的新项目时,它也会删除ArtiFactory插件及其依赖项。项目代码不使用ArtiFactory,只使用构建过程。
如何更改我的包以不包括Artifactory插件及其依赖项?
我曾尝试从正在发布的项目中删除artifactory存储库,但在CI生成时失败,因为运行MsBuild任务需要artifactory,并且生成失败。
这里有两个问题的解决方案:
- 由于Artifactory插件是按照每个解决方案安装的,因此您可以在其中创建一个新项目,为该项目安装插件,并将该项目的部署标志设置为
false
。通过这种方式,插件将被安装,但插件的工件不会被上传 - 另一个(更明确的解决方案)是使用排除模式来排除artifactory dll及其依赖项
我使用了以下解决方案:
- 将文件从$(Solution目录)\packages\Artifactory.1.0.0\lib\net45复制到$(Solutiondirectory.Artifactory
- 在Visual Studio解决方案中,将3个dll作为现有文件添加到.artifactory解决方案目录中
- 编辑.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" />
- 从项目中删除对JFrog.Artifactory.dll、Microsoft.Web.XmlTransoform.dll和NuGet.Core.dll的引用
- 从packages.config中删除JFrog.Artifactory.dll、Microsoft.Web.XmlTransoform.dll和NuGet.Core.dll的引用
- 从.nuspec文件中删除依赖项