【问题标题】:.NET MVC 3 Deployment package missing references.NET MVC 3 部署包缺少参考
【发布时间】:2012-03-23 20:24:48
【问题描述】:

在一个 ASP.NET MVC3 项目中,我有这样的结构:

Core.csproj
 -> 3rdparty1.dll
    -> 3rdpartyreference.dll
 -> 3rdparty2.dll

Web.csproj
 -> core.dll

我正在使用 VS2010 中的构建部署包功能。当我构建时,最终的 bin 目录中缺少一些引用。它仅包含 web.dll、core.dll、3rdparty1.dll 和 3rdparty2.dll,但缺少 3rdpartyreference.dll。

如何强制部署功能复制所有必要的引用? (无需在csproj的afterbuild中手动创建特定的“copy something.dll”指令)

【问题讨论】:

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


    【解决方案1】:

    在 VS 2010 的部署包和发布功能中涉及的 MSBuild 任务无法通过您的应用依赖于依赖于另一个的程序集的位置获取间接引用。您可以手动复制文件(不推荐),也可以将未使用的引用变量添加到指向第三方引用.dll 中的某个类的核心项目。此引用变量,即使未使用,也会导致 VS 2010 认为您对该第三方 dll 有显式依赖,并按预期将其复制到 bin 目录。

    【讨论】:

    • 我决定采用这种方法,因为它不需要 2 个物理副本来保持最新状态。是否有一些计划让新的 vs 有针对这种情况的配置设置(强制包含所有引用)?
    【解决方案2】:

    您正在寻找的功能称为“Bin 部署”。在这个article 中有一个分步解决方案。基本上,您需要将可部署程序集添加到您的项目中 - 特定文件夹将显示在您的项目结构中,您可以在其中添加必要的 dll 文件。

    【讨论】:

    • 不知道为什么这被否决了,这是一个很好的答案。您可能需要仔细阅读,但有这样的:So here’s the kicker. If you’re building a web application, and you need an assembly deployed but don’t want it referenced and don’t want it checked into the bin directory, you can simply add this folder yourself and put your own assemblies in here. 这正是 OP 所要求的。
    • 这项工作还可以,但需要我保留 2 份参考资料。一个在我自己的 ../packages/reference.dll 中,我保留所有外部引用,一个在 _bin_deployableAssemblies 中。有没有一种只在第二个目录中引用而不是物理复制的好方法?
    • 尝试添加为链接。右键单击->添加->现有项目..->选择.dll并单击按钮上“添加”文本右侧的箭头->作为链接
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多