【问题标题】:How to set "Specific Version" property for project references in Visual Studio如何在 Visual Studio 中为项目引用设置“特定版本”属性
【发布时间】:2010-10-29 06:42:19
【问题描述】:

我有一个包含多个项目的 Visual Studio 解决方案,并将项目之间的引用设置为项目引用。

添加对程序集的引用时,引用的属性包含设置

Specific Version = True|False

项目引用缺少此属性。怎么设置?我希望我的解决方案能够在 bin 文件夹中加载任何可用的程序集(无论是什么版本)。

我在反序列化工作流实例 (Workflow Foundation) 并同时更新依赖项时遇到问题。

【问题讨论】:

    标签: c# visual-studio visual-studio-2008 assemblies workflow-foundation


    【解决方案1】:

    我认为问题在于您所问的问题无法直接使用项目引用,我认为由于链接的性质,它总是隐含地变成“显式版本”。

    可以执行此操作的方式(调用当前引用的项目 A 和引用的项目 B):

    • 在解决方案中包含您要引用的项目,就像您现在使用项目引用一样
    • 显式设置依赖链,以便首先构建“引用”项目
    • 首先手动构建引用的项目 A 一次
    • 在项目 B 中创建对项目 A 中构建结果的程序集引用
    • 将程序集引用设置为“特定版本 = false”

    构建顺序(依赖)会保证A总是在B之前构建,B会从A的二进制输出目录中引用它。

    (不过,它有点脆,我不推荐它,因为如果设置不正确,或者太阳与星星对齐错误等,很容易得到错误的结果)

    【讨论】:

    • 您可以通过在文本编辑器中打开“ProjectB.csproj”文件并更改<HintPath> 来支持为不同的构建配置(发布/调试)匹配引用项目的输出文件夹以引用(例如)<HintPath>..\ProjectA\bin\$(Configuration)\ProjectA.dll</HintPath>
    【解决方案2】:

    我可能误解了您的问题,但是当您添加项目引用时,该项目的程序集始终会加载到在构建项目时引用它的任何项目中。因此,您将始终在该项目的 bin 文件夹中拥有最新的可用程序集。 VS 在这方面对待项目的方式与其他程序集不同。

    【讨论】:

    • 我已经更新了这个问题。我想在 bin 文件夹中加载任何可用版本。当反序列化工作流实例(Workflow Foundation)并且同时更新依赖项时,我遇到了问题。
    【解决方案3】:

    您可以添加对项目输出 dll 而不是项目的引用。然后您将能够设置特定版本设置。

    【讨论】:

    • 感谢您的回答。但是您如何处理调试和发布程序集呢?它们位于不同的文件夹中。
    • 您可以通过编辑 .csproj 文件来使用 中的变量,例如$(OutDir)\Referenced.dll..\Referenced\bin\$(Configuration)\Referenced.dll
    【解决方案4】:

    我找到了解决问题的方法。它的描述非常详细here。 问题不在于错误的项目引用,而更多的是工作流实例的反序列化问题。

    感谢所有试图提供帮助的人。

    【讨论】:

    • 不幸的是,链接已损坏。有办法解决吗?
    • 我已更新链接,但帖子的第一部分不再可用。请注意,问题出在 WF 3.5 上。今天的 WF 4.5 在 WF 版本控制方面提供了更多开箱即用的功能。
    猜你喜欢
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 2012-05-05
    • 1970-01-01
    相关资源
    最近更新 更多