问题标签 [side-by-side]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2344 浏览

assemblies - 使用清单工具 (mt.exe) 更改“非托管程序集”的“版本”

既然本机代码可以具有用于并行缓存使用的程序集(例如“非托管程序集”),我有兴趣在构建 DLL 后更改它的版本(作为增量构建自动版本控制方案的一部分) . 我想我很接近使用这个命令:

mt -updateresource:MyNewlyBuiltThing.dll;#2 -identity:"MyNewlyBuiltThing, version=5.5.0.1"

该命令给了我以下错误:

mt.exe : general error c101008d: Failed to write the updated manifest to the resource of file "MyNewlyBuiltThing.dll". Access is denied.

该命令是从具有管理员权限的命令提示符处执行的,并且我的开发盒上没有防病毒软件(并且该文件没有设置只读标志)。

也许问题是我在身份字符串中使用了错误的名称。毕竟,当我将二进制文件的嵌入式资源加载到 Visual Studio 中时,它会显示一个不需要提及其名称的清单——它只提及依赖项的名称。

无论如何,我只是想知道是否可以诱使 mt.exe 给我一个非托管程序集的构建后版本碰撞。对我做错了什么有任何见解吗?如果这是不可能的,为什么?

0 投票
2 回答
1786 浏览

c# - 免注册 COM 互操作:应用程序无法启动,因为它的并排配置不正确

背景。我有一个用 C# 编写的名为 ComWrapper.dll 的 COM Wrapper 程序集,以及名为 Project1.exe 的 Visual Basic 6 应用程序。我添加了 Project1.exe.manifest 文件(其内容如下所示),我收到一条错误消息,提示“应用程序无法启动,因为它的并排配置不正确。这是我的配置.

任何帮助将非常感激。

0 投票
1 回答
1095 浏览

com-interop - 根据应用程序运行的位数加载 32 位或 64 位并排 COM DLL

我有一个使用 COM DLL 的 .NET 应用程序,其中有 32 位和 64 位版本。我编写了两个应用程序清单,使并行 COM 互操作可以在 32 位或 64 位上工作。这里是 32 位版本:

但是,维护两个清单会导致可移植性的损失:您需要在安装应用程序时决定使用哪个版本。并且 64 位应用程序不能再在 32 位模式下运行。

是否有可能让 .NET 应用程序根据其运行的位数加载正确的 32 位或 64 位 DLL?我尝试使用两个依赖元素,一个 with<assemblyIdentity processorArchitecture="x86" .../>和一个 with <assemblyIdentity processorArchitecture="amd64" .../>,但这会导致应用程序配置错误。

我将非常感谢您的回答。问候,莫里茨

0 投票
1 回答
2196 浏览

visual-studio - 错误 - 应用程序无法启动,因为它的并排配置不正确

我在 Visual Studio 2008 上构建的 exe 在我的开发系统上运行,但在其他系统上出现错误“应用程序无法启动,因为它的并排配置不正确。请...” exe 处于发布模式,并且我已经安装了 VC 可再发行组件。

使用 dumpbin /dependents 命令我看到它与其他 dll 一起也依赖于 msvcr90d.dll 我认为这可能是我收到此错误的原因。在项目属性 - cc++ - 代码生成 - 运行时库中,我选择了 MultiThreaded dll (/MD)

有关如何删除此依赖项或最终如何修复错误的任何建议?

谢谢,普拉迪普

0 投票
2 回答
2778 浏览

c++ - msvcp90d.dll 缺少 msvcr90d.dll

我在一台机器上有一个 DLL 项目,然后用新安装的 VS2008 将它复制到另一台机器上。该项目构建,但我无法调试它。Dependecy Walker 显示我的 DLL 看到 msvcr90d.dll,但 msvcp90d.dll没有看到相同的 DLL。但是,如果我在单独的窗口中打开 msvcp90d.dll,则 msvcp90d.dll对 msvcp90d.dll可见。这显然是一些 SxS 问题,但我不知道如何解决它。我尝试了几个建议的修复,发现谷歌搜索:

  • 禁用增量链接,
  • 删除然后包括清单构建
  • 从 My Documents\Visual Studio 2008 中删除 Settings 文件夹

它们都不起作用。Debug 和 Release 版本的情况都是一样的。帮助!

0 投票
3 回答
3507 浏览

c++ - 如何应对vmware中的“应用程序无法启动,因为它的并排配置不正确”错误?

当我尝试在带有 Windows Server 2008 32 位操作系统的 VMWare Workstation 6.5 中打开已发布的 .exe 文件(我在 Visual Studio 2008 中编写的)时,得到“应用程序无法启动,因为它的并排配置不正确。” 即使代码是错误的;

有没有人遇到过这个问题之王或知道如何应对?

0 投票
1 回答
295 浏览

windows - 并行 COM 的限制是什么?

我们需要调整我们的应用程序以通过 ClickOnce 使用。该应用程序由一个 .exe 文件和大量 Visual C++ 库组成,其中一些是其他库使用的进程内 COM 服务器。

目前我们的安装程序确实regsvr32注册了 COM 服务器,但看起来 ClickOnce 应用程序在安装期间不允许修改注册表。所以我们需要别的东西。

选项一是删除CoCreateInstance()并改为使用LoadLibraryEx()/ DllGetClassObject()。这将需要修改代码,但非常可靠 - 我看不出有任何原因导致这不起作用。

选项二是对清单使用并行 COM 激活。我立即看到的问题是我们在每个夜间构建中增加版本号,因此我们将不得不自动更新清单。这不是很鼓舞人心。使用并行 COM 激活还有哪些其他不那么明显的限制?

0 投票
1 回答
2208 浏览

.net - 在 VM 上调试构建的 SideBySide 问题

我有一个使用 Visual Studio 2008 开发的 .NET 应用程序,它使用名为xVJob.dll的 C++/CLI DLL 。

当我尝试在测试 VM 上运行它时出现 SideBySide 错误。VM 正在运行 Windows Server 2003 SP2。

我可以在我的开发机器上运行和调试一切正常,但是当我尝试在测试 VM 上运行它时,它会引发异常:

我已将 Microsoft.VC90.DebugCRT 和 Microsoft.VC90.DebugMFC 文件夹从 C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist 复制到 VM 上包含可执行文件的文件夹中。

构建 xVJob.dll 时创建的清单如下所示:

Debug_NonRedist 运行时 DLL 的清单表明它们是 version version=" 9.0.30729.4148 "。

以下事件记录到系统事件日志中:

在清单中找到的组件标识与请求的组件标识不匹配

第 4 行的清单或策略文件“...\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.MANIFEST”中有语法错误。

这是 Microsoft.VC90.DebugCRT.MANIFEST 文件的内容:

我不明白为什么我在使用 xVJob.dll 和运行时文件生成的清单中得到不同的运行时版本。

请帮忙!

0 投票
4 回答
26021 浏览

windows - What is a Windows command-line EXE's "side-by-side configuration" and how do I correct it?

I have a simple .exe written in C++ (built with Visual Studio 2005) that tests some hardware using a supplied API. It works fine on the Windows 7 machine I built it on, but when I copy it to another (Windows 7) machine and run it (from the command-line) I get:

The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail.

What is "side-by-side configuration"?

I ran sxstrace.exe and read the usage info. It appears I would need to instrument my exe to generate a log file for sxstrace.exe to be useful?

I imagine the problem is my exe requires DLLs that either don't exist on the other machine, or are the wrong version. How do I find out what DLLs my exe uses, and what versions it links to on my machine (where it works)? Any other advice on copying it to another machine and getting it running? Would more information help?

0 投票
1 回答
45019 浏览

windows-7 - 为什么我没有 Microsoft.VC80.MFC 文件?

有一台安装了 VS2005 的全新 Win7 机器。我试图启动一个 MyApp.exe,它是用 Manifest.bin 中的清单构建的:

...

...

结果是错误消息“应用程序无法启动,因为它的并排配置不正确......

事件查看器详细告诉我原因:

“c:\Xxx\MyApp.exe”的激活上下文生成失败。相关程序集 Microsoft.VC80.MFC,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053" 找不到。请使用 sxstrace.exe 进行详细诊断。

所以我浏览了winsxs文件夹,确实所有“4053文件夹”都不见了。然后我编辑 Manifest.bin 并将 4053 替换为 4927。错误在不同版本中再次出现。然后我发现我得到了 msvcr80.dll 的“4927 文件夹”,但没有得到 mfc80.dll 的“4927 文件夹”。

两个问题:

- 为什么 mfc80.dll 没有“4927 文件夹”?

- 如何获取所有“4053 文件夹”?

谢谢和BR-马蒂