问题标签 [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 回答
638 浏览

.net - .net 调用 COM 是否在使用 SxS 和清单文件时调用其他 .net COM 对象工作

我有一个调用 COM 组件 (C++) 的 .net 应用程序,该组件又调用在 .NET 中实现的另一个 COM 对象。

此应用程序正在使用 Windows SxS 功能,并且不注册它的任何 COM 组件。不是用 C++ 编写的,也不是用 .net 编写的。

对 C++ COM 组件的第一次调用工作正常。但是,当 C++ COM 组件调用 .net 组件时,它会因未注册类而失败。

我尝试使用调用 .net 组件的清单文件创建一个小型 C++ 应用程序,并且它可以工作。似乎当流程是 .net -> COM NATIVE -> .NET COM。然后 SxS 中断并且不起作用。

查看 Fusion Logs(程序集加载日志)时,我发现甚至没有人尝试解析 .NET COM 程序集。

这个 SxS 场景是否应该有效(我认为它应该有效)?如果是,那么我做错了什么?

这些是我正在使用的清单文件。

.net 应用程序的应用程序清单(作为资源嵌入):

application.sxs.manifest(常规文件):

PerformanceMonitor 清单(作为资源嵌入 PerformanceMonitor.dll 以解决 XP 中的 .net com 错误):

0 投票
1 回答
317 浏览

.net-4.0 - .NET 4 并排问题

如果宿主程序是用 .NET 4 编译的,但引用的 dll 是 .net 3.5。那么目标部署机器需要同时安装.net 4 框架和.net 3.5 框架运行时?

0 投票
1 回答
59 浏览

visual-studio - 我可以使用清单来使用 COM 服务器而不指定其版本吗?

我们的两个程序使用具有相同类 ID 的相同 COM 服务器(也是我们制造的)。每个程序在安装时都会将 COM 服务器文件复制到其文件夹中并regsvr32作为 COM 服务器。

问题是如何安装 COM 服务器,以便用户可以将我们的一个或两个程序以任何顺序安装到不同的文件夹中,并且可能有不同的版本。显然,不更改类 ID 是不可能的,而且配置很麻烦。理想情况下,我们希望为此使用清单并且不使用regsvr32.

问题是每次我读到关于无注册 COM(例如,这里versionassemblyIdentity. 版本号应该每晚构建一次,我完全不喜欢(自动)调整它的想法。我理解为什么指定对特定版本的依赖是好的,但在我们的场景中它完全没用。

有没有办法为 COM 服务器和消费者编写清单,以便他们不指定版本而只使用文件夹中恰好存在的文件的任何版本?还有一种方法可以将搜索限制在与消费者相同的文件夹中吗?

0 投票
1 回答
350 浏览

visual-studio - 我可以使用清单来指定对 COM 服务器的可选依赖项吗?

我想使用清单来指定对 COM 服务器的依赖关系(无 reg-free COM)。

消费者应用程序在没有 COM 服务器的情况下大部分都可以正常工作 - 只有 1.7% 的功能使用 COM 服务器。因此,在普通旧的regsvr32情况下,它会开始并正常工作,直到用户做一些会触发CoCreateInstance()调用的事情,此时消费者会收到一条错误消息。

现在我已经玩了一段时间的清单,看起来消费者甚至不会启动,除非它所依赖的 COM 服务器程序集存在于文件系统中。那不好。

我添加了具有以下内容的“附加清单”:

有没有办法将无注册 COM 与清单一起使用并使依赖项可选 - 以便消费者程序启动并正常工作,直到CoCreateInstance()实际调用?

0 投票
2 回答
336 浏览

windows - 使用 LoadLibraryEx() 而不是 CoCreateInstance() 进行无注册 COM 组件消耗有什么缺点吗?

我们的程序需要使用我们自己制作的 COM 服务器。场景如下:安装程序将在每次安装时将程序文件和 COM 服务器文件复制到同一个文件夹中。

目前我们使用 regsvr32 注册 COM 服务器,但这不是很好 - 如果我们开发另一个不相关的程序,也使用相同的 COM 服务器(可能是另一个版本),我们可能会遇到问题 - 因为 CLSID 没有改变,服务器稍后注册的程序将被两个程序使用,第一个程序可能会发生故障。

所以我们需要无注册的 COM。我们可以使用清单,但我已经使用它们一段时间了,发现它们在夜间构建中使用起来不太方便。我们也可以重写程序,而不是调用CoCreateInstance()它调用LoadLibraryEx(),然后GetProcAddress()定位DllGetClassObject(),然后只检索类工厂并使用它。

我立即看到了一些缺点:

  • 该程序将依赖于确切的 COM 服务器文件名
  • 必须为通常由 Windows 管理的内容编写额外的代码
  • COM 服务器必须在进程内,并且永远不会使用编组

并且这些缺点通常可能是展示塞子,但在我们的特定场景中看起来一点也不差。

LoadLibraryEx()使用/DllGetClassObject()相比还有其他缺点CoCreateInstance()吗?

0 投票
3 回答
1170 浏览

f# - FSharp.Compiler.CodeDom 用于 VS2008 和 VS2010 并排

我正在使用 FSharp.Compiler.CodeDom (来自PowerPack)来动态创建 F# 类。问题是,我的计算机上同时有 VS2008 和 VS2010(它们工作正常),并且在此配置中使用 F# 充其量是错误的:

  • 如果我不安装 InstallFSharp.msi,那么在 VS2008 下,构建的类会抱怨找不到 FSharp.Core(即使它们被引用)
  • 如果我安装 InstallFSharp.msi,那么在 VS2008 下,构建的类将使用为 VS2010 构建的 F#,并且会抛出二进制不兼容异常,因为它将加载 .net4 变体:

    FSC:错误 FS0219:引用的或默认的基本 CLI 库“mscorlib”与引用的 F# 核心库“C:\Program Files (x86)\Microsoft F#\v4.0\FSharp.Core.dll”二进制不兼容。考虑重新编译库或显式引用与您正在使用的 CLI 版本匹配的库版本。

  • 如果我将在之前位置找到的F#替换为单独安装的dll-s,那么VS2010当然会抱怨二进制不兼容

我是否忽略了某些东西,或者他们不会简单地为这样的共享环境工作?当我部署应用程序时,这可能意味着真正的问题。

谢谢

0 投票
1 回答
1116 浏览

c++ - 为什么我的应用程序无法使用 x64 版本的 Windows Server 2008 运行?

我有一个 Win32 C++ 应用程序,它使用了一些安装在数百台客户机器上的第三方 DLL。我最近在 Windows XP、Windows Vista x64、Windows 7 x86 以及 Windows Server 2008 x86 上成功测试了 x86 版本的安装。没问题。安装程序 (nullsoft) 安装 VC 2005 和 VC 2008 的可再发行文件,因为我们使用的不同 DLL 都需要这两个文件。

但是对于 Windows Server 2008 x64,x86 和 x64 版本都拒绝启动。当我启动程序的 x86 版本时,会出现一个对话框:

EventLog 包含一条消息:

\Windows\winsxs 包含一个目录

使用 sxstrace(首先跟踪,然后解析)创建一个包含不可读字符的 3 字节长度的日志文件。x64 版本的行为类似。此外,来自第 3 方 Dll 的所有演示程序都可以正常工作。有什么提示吗?

0 投票
1 回答
1486 浏览

assemblies - 如何更改可执行文件的 assemblyIdentity?

我想隐藏我用来创建 .exe 文件的工具。我没有做任何违法的事情,我只是想保护我的知识产权不被复制。如果我在文本编辑器中打开 exe 文件,我会看到以下部分。

我试图将名称更改为:
name="Microsoft.Windows.SomeOtherName"

当我尝试执行文件时,这导致了以下消息。“此应用程序无法启动,因为它的并排配置不正确。”

我该如何解决这个问题?

0 投票
1 回答
163 浏览

.net - 如果在同一进程中使用 .NET 1.1 和 .NET 2.0 COM 对象会发生什么?

如果一个进程同时加载 .NET 1.1 COM 对象和 .NET 2.0 COM 对象,两者都使用进程内服务器,会发生什么情况?这个配置有什么问题吗?或者将其中一个对象设置为进程外服务器会更安全吗?

0 投票
3 回答
4260 浏览

.net-3.5 - .NET 3.5 运行时和 .NET 4 运行时兼容性

是否可以使用使用 .NET 4 构建的插件来运行基于 .NET 3.5 构建的应用程序?