我该怎么做以使_PublishedWebsites文件夹包含缺少的DLL

问题描述 投票:5回答:2

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

IISProject-> SetupProject-> NServiceBusProject-> NugetPackage。

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

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

Internet上的常见答案是将CopyLocal = True。但是对于NugetPackage和NServiceBusProject引用来说已经是正确的。

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

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

visual-studio visual-studio-2010 tfs tfsbuild
2个回答
3
投票

由于我只是处理这样的事情,尽管这个问题年代久远,但这就是我最终要做的事情。这不是理想的方法,但确实可行。

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

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

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

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


0
投票

我打开了.proj XML,并查看了未复制DLL的参考。我确保包括<Private>True</Private>作为参考。即使UI显示“复制本地”,也没有设置它。这可能与删除/读取参考以及其他答案一样。

© www.soinside.com 2019 - 2024. All rights reserved.