我可以修改并排程序集搜索顺序吗?

2023-12-29

我有一个 Windows C++ 软件项目(使用 Visual Studio 2005 SP1 构建),具有以下(简化的)文件布局:

{App. Root Directory}
|-- bin
|   |-- Microsoft.VC80.CRT
|   +-- Microsoft.VC80.MFC
+-- utils

有各种可执行文件存在于两个bin and utils目录。每个可执行文件都依赖于我们存储在其中的并行程序集(C++ 运行时 DLL)bin,但我们出于各种原因将它们分成这些单独的文件夹(例如,utils文件夹是我们主要应用程序的补充工具,并且不经常运行)。作为此文件组织的直接结果,应用程序utils文件夹无法在尚未安装适当的并行程序集的系统上运行(它们会因通常的情况而失败)“系统无法执行指定的程序”错误信息)。

我的问题:有什么方法可以告诉应用程序中的utils文件夹以显式查找..\bin适当的并排装配的文件夹?这程序集搜索顺序 http://msdn.microsoft.com/en-us/library/aa374224.aspx微软的文章没有提到这是否可能。有没有一种聪明的方法可以解决这些应用程序的运行时要求?

我看到的潜在选择:

  1. 将并排装配体的副本放入utils文件夹。这可以在运行时完成(以防止我们的应用程序安装包膨胀),但看起来有点脏。
  2. 静态链接运行时 DLL。我不想这样做!
  3. 让最终用户安装常用的可再发行软件包。我也不愿意这样做。

我的第一反应是,将公用事业与公用事业分开会带来什么实际好处?.\bin文件夹?我自己也有强迫症倾向,我理解整洁的感觉,但一旦可以明显地看到它对您部署应用程序的能力产生负面影响,那么继续这种做法似乎就毫无意义了。

也就是说,这在技术上实际上是可行的。为此,您可以使用探测私有路径 http://msdn.microsoft.com/en-us/library/windows/desktop/aa374182%28v=vs.85%29.aspxapp.config 文件中的元素。 应用程序配置文件的工作方式与应用程序清单类似,只是它们不能作为资源嵌入:在 exe 所在的同一文件夹中创建一个文件,其中包含 exe 的全名(包括 exe 扩展名)并附加.config.

<!-- acme.exe.config -->
<configuration>   
  <windows>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="bin;..\bin" />
    </assemblyBinding>
  </windows>
</configuration>

有许多警告使得该解决方案可能无法工作 - 任何指定其自己的依赖程序集的 dll 都需要有一个应用程序配置文件,其中包含probing privatePath元素。 还支持probing节点仅在 Windows NT 6.0 (Vista) 中添加,因此如果您仍需要以 XP 为目标,则此解决方案不合适。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以修改并排程序集搜索顺序吗? 的相关文章

  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • pthread_cond_timedwait() 和 pthread_cond_broadcast() 解释

    因此 我在堆栈溢出和其他资源上进行了大量搜索 但我无法理解有关上述函数的一些内容 具体来说 1 当pthread cond timedwait 因为定时器值用完而返回时 它如何自动重新获取互斥锁 互斥锁可能被锁定在其他地方 例如 在生产者
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • Newtonsoft JSON PreserveReferences处理自定义等于用法

    我目前在使用 Newtonsoft Json 时遇到一些问题 我想要的很简单 将要序列化的对象与所有属性和子属性进行比较以确保相等 我现在尝试创建自己的 EqualityComparer 但它仅与父对象的属性进行比较 另外 我尝试编写自己的
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • C# 中的递归自定义配置

    我正在尝试创建一个遵循以下递归结构的自定义配置部分
  • 如何在 Windows 命令行中使用参数运行 Python 脚本

    这是我的蟒蛇hello py script def hello a b print hello and that s your sum sum a b print sum import sys if name main hello sys
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 需要哪个版本的 Visual C++ 运行时库?

    microsoft 的最新 vcredist 2010 版 是否包含以前的版本 2008 SP1 和 2005 SP1 还是我需要安装全部 3 个版本 谢谢 你需要所有这些
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • const、span 和迭代器的问题

    我尝试编写一个按索引迭代容器的迭代器 AIt and a const It两者都允许更改容器的内容 AConst it and a const Const it两者都禁止更改容器的内容 之后 我尝试写一个span
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif

随机推荐