我该怎么做才能获得_PublishedWebsites文件夹包含丢失的DLL

时间:2012-01-09 22:04:04

标签: visual-studio visual-studio-2010 tfs tfs2010 tfsbuild

我的IIS项目引用了一个引用NServiceBus项目的安装项目,该项目具有一个dll的nuget包:

  

IISProject-> SetupProject-> NServiceBusProject-> NugetPackage

当我运行自动构建(TFS)时,NugetPackage.dll和NServiceBusProject被复制到输出文件夹。但它们不会复制到_PublishedWebsites文件夹。 (但我需要的所有其他dll都会被复制。)

我对如何自动复制这些文件感到茫然。

互联网上的常见答案是设置CopyLocal = True。但是对于NugetPackage和NServiceBusProject引用已经是如此。

有谁知道怎么说“我真的希望你在发布的网站中包含依赖项目吗?

或者我还能看到其他什么?

2 个答案:

答案 0 :(得分:3)

因为我刚刚处理过这样的事情,尽管这个问题的年代,这就是我最终做的事情。它并不理想,但确实有效。

在您实际构建的项目上设置构建后事件。在构建事件中,您可以使用$(ProjectDir)变量引用当前位置。设置一条路径,指向项目构建后所需的dll的“正常”位置。我想在你的情况下,这将是NServiceBus项目的bin目录。

您可以使用$(WebProjectOutputDir)变量访问“_PublishedWebsites”目录。在本地构建时,它指向与正在构建的项目相同的目录。但是,当使用非标准输出目录(也称为TFS)调用msbuild时,它将更改为发布目录。

xcopy /Y /S "$(ProjectDir)..\path to needed dll" "$(WebProjectOutputDir)\bin"

您的构建应该在本地和您的构建环境中使用此脚本。唯一的缺点是它有点脆,因为你需要指定缺失的dll的确切名称和相对位置。

答案 1 :(得分:0)

我打开了.proj XML,并查看了未复制DLL的参考。我确保包含<Private>True</Private>供参考。即使UI显示“复制本地”,也没有设置它。这可能与根据其他答案删除/读取参考文献的效果相同。