.net - Visual Studio 2010 - 如何强制项目引用使用确切路径而不是 GAC 或程序文件?

标签 .net visual-studio-2010

我们永远有这个问题,我们有许多解决方案和一个相邻的/Components/文件夹。我们要引用的所有 DLL 都在此文件夹中。其中一些我们从源代码构建以使用仅存在于组件二进制文件中的特定版本号,但是当不同机器上的用户从 TFS 获取最新的所有内容时,因此具有确切的磁盘结构 Visual Studio STILL 更改对安装在 Program Files、GAC 或其他地方的引用。

已尝试手动编辑 proj 文件以包含 HintPath,例如

<Reference Include="Foo, Version=5.5.5.5, Culture=neutral, processorArchitecture=MSIL">
    <SpecificVersion>False</SpecificVersion>
    <HintPath>..\Components\Foo.dll</HintPath>
</Reference>

无济于事。我们如何强制视觉工作室尊重这条道路?

最佳答案

除了指定“hintPath”之外,将“SpecificVersion”设置为 true 似乎是一个解决方案,因为它“防止 Visual Studio 使用多个目标规则进行程序集解析”。

但是,一旦 foo.dll 不可用(在构建或加载项目时),Visual Studio 魔术就会启动并将程序集目标路径更改为最近的“匹配”程序集。

在此之后,原始 foo.dll 是否恢复到其位置(在目标路径名)甚至 都无关紧要。已更改 ! - Visual Studio 仍指其新发现的匹配项。
这是非常不可取的 .

可能的解决方案:

  • 强名称 foo.dll,但是 foo.dll 可能只引用其他强名称程序集(通常是不受欢迎的)。
  • 通过在父应用程序中注册事件来自定义程序集解析。这允许您在运行时准确定义在哪里可以找到目标程序集 - 但这似乎要解决这个简单的问题太多了。

  • 我的 解决此问题 (很容易)是将 LOCAL COPY 设置为 FALSE,并向项目添加后期构建步骤,该步骤手动将目标程序集复制到目标 bin 文件夹。不好的部分是在构建后步骤和项目的引用配置之间创建的重复(和解耦)数量。

    请微软 - 向引用属性页面添加一个选项,该选项将优先考虑提示路径(我们明确指定)而不是惊喜魔法路径......或者至少,如果两者不同,则抛出警告/错误!

    关于.net - Visual Studio 2010 - 如何强制项目引用使用确切路径而不是 GAC 或程序文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17967700/

    相关文章:

    c# - 从 MVC View 模型保存重新排序的列表项

    .net - 在 VS 2010 中禁用 VB.NET 10 功能

    c# - 需要从 .Net 2 升级到更新的版本?

    c++ - Visual Studio 2010 上的 GStreamer C++?

    c# - C# 单元测试项目的 Web 前端

    .net - 带有度量单位的重载函数

    c# - 如何使包含 ItemsControl 的 WPF 网格具有相同大小的列

    C# 试图打开远程文件位置但 Windows 未传递凭据

    c++ - 如何读取 Visual C++ 2010 生成的程序集输出?

    c# - 如何解决另一个进程正在使用的文件?