我该怎么办才能使_PublishedWebsites文件夹包含缺少的DLL

Vac*_*ano 5 tfs visual-studio-2010 tfsbuild visual-studio tfs2010

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

IISProject-> SetupProject-> NServiceBusProject-> NugetPackage。

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

我不知道如何使这些文件自动复制。

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

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

或者还有什么我可以看的?

Sou*_*eAK 4

由于我刚刚处理过这样的事情,尽管这个问题已经存在很久了,这就是我最终所做的。这并不理想,但确实有效。

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

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

xcopy /Y /S "$(ProjectDir)..\path to needed dll" "$(WebProjectOutputDir)\bin"
Run Code Online (Sandbox Code Playgroud)

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