【问题标题】:How do you include a non-referenced dll when publishing a web application?发布 Web 应用程序时如何包含未引用的 dll?
【发布时间】:2010-12-30 21:01:29
【问题描述】:

我在尝试通过 Visual Studio 2010 中的“打包/发布 Web”功能发布的 ASP.NET 网站中没有直接引用的各种 dll。

我如何告诉发布功能它需要包含这些特定文件?

请注意,我不想直接引用这些 dll(该解决方案已专门设置为不直接引用这些特定 dll)。

我找到了<ExcludeFilesFromDeployment/>,但找不到专门包含文件的方法。

【问题讨论】:

  • 您为什么反对只引用 DLL?
  • 如果引用了 dll,程序员可以直接使用那些 dll 中的类,而不是使用我设置的抽象层。更具体地说,我在一个项目中有接口(被引用),在另一个项目中有具体实现(没有被引用)。这一切都通过 DI 容器连接在一起,一个简单的配置文件条目将所有内容连接起来。我不希望程序员绕过这个基础设施。
  • 是的,Oded,在一个完美的世界里,这些违规行为会被 nDepend 发现。并不是我不信任开发者(其中我非常包括在内),而是我想带领他们走向“成功的深渊”。如果我可以简化项目参考,使团队不会轻易陷入困境,那就是胜利。在跨多个平台、跨多个项目、拥有不同经验水平的团队中,任何胜利都是值得赞赏的。

标签: asp.net visual-studio-2010 deployment


【解决方案1】:

如果您想通过 Publish 方法包含文件,您可以在 MSbuild 文件 (.*proj) 中使用“FilesForPackagingFromProject”元素

有用的链接:http://sedodream.com/2010/05/01/WebDeploymentToolMSDeployBuildPackageIncludingExtraFilesOrExcludingSpecificFiles.aspx

【讨论】:

  • 谢谢 - 这正是我想要的!
【解决方案2】:

您可以将它们添加到项目中(就像添加图像一样)并将属性复制到输出目录更改为如果更新则复制。然后,当您构建它们时,应将它们放入垃圾箱中。这在您发布时也应该有效。

【讨论】:

  • 这当然是一个选择,即使它有点像黑客。谢谢!
  • 是的。我们有一个类似于您在使用 Unity 时所做的解决方案,我感受到了您的痛苦。我们使用构建后事件将 dll 推送到 bin 中,但是在发布时我们必须记住手动抓取它们。
【解决方案3】:

它只会从您网站中的文件夹发布。我一直只是让网站引用这些文件,所以当我构建它时,它们就在网站的本地,并且会与其他所有文件一起发布。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 2013-09-07
相关资源
最近更新 更多