我的IIS项目引用了一个安装项目,该项目引用了一个NServiceBus项目,该项目具有一个dll的nuget包:
IISProject->SetupProject->NServiceBusProject->NugetPackage.
当我运行自动构建(TFS)时,NugetPackage.dll和NServiceBusProject被复制到输出文件夹.但它们不会复制到_PublishedWebsites文件夹. (但我需要的所有其他dll都被复制了.)
我对如何自动复制这些文件感到茫然.
互联网上的常见答案是设置CopyLocal = True.但是对于NugetPackage和NServiceBusProject引用来说已经是这样了.
有谁知道怎么说“我真的希望你在发布的网站中包含依赖项目吗?
或者还有什么我可以看的?
最佳答案 因为我刚刚处理了这样的事情,尽管这个问题的年代,这就是我最终做的事情.它并不理想,但确实有效.
在您实际构建的项目上设置构建后事件.在构建事件中,您可以使用$(ProjectDir)变量引用当前位置.设置一条路径,指向项目构建后所需的dll的“正常”位置.我想在你的情况下,这将是NServiceBus项目的bin目录.
您可以使用$(WebProjectOutputDir)变量访问“_PublishedWebsites”目录.在本地构建时,它指向与正在构建的项目相同的目录.但是,当使用非标准输出目录(也称为TFS)调用msbuild时,它将更改为发布目录.
xcopy /Y /S "$(ProjectDir)..\path to needed dll" "$(WebProjectOutputDir)\bin"
您的构建应该使用此脚本在本地和构建环境中工作.唯一的缺点是它有点脆,因为你需要指定缺少的dll的确切名称和相对位置.