标签: side-by-side

与C#和VBA并排COM互操作

我不是在谈论从C#调用VBA COM ......反过来说!

我想要做的是在MS Access中使用VBA调用C#库而不注册DLL.我一直在玩并排互操作一段时间没有成功,我终于想到一个mdb.manifest可能不是exe.manifest的可接受的替代品(可能很明显,我知道,但我我试图保持乐观.

我的问题:是否有可能让VBA加载并排的COM组件?

或者,是否有另一种方法在Access中使用未注册的C#库?

(在您提出问题之前,我的理由是:我绝对无法访问我的客户端的Windows注册表 - 这就是为什么它首先在Access中编写.而且,我需要在一个实现相同的功能. C#应用程序很快,而不是做两次).

c# vba com-interop side-by-side

7
推荐指数
2
解决办法
5487
查看次数

Dependency Walker错误:"ABC.DLL"的并排配置信息包含错误

我正在运行我在Visual Studio 2010中构建的程序,该程序使用第三方DLL"ABC.DLL".我在Windows 7 64位上.

但是,由于一个DLL,它无法运行.在此DLL上运行Dependency walker时,我收到以下错误:

错误:"...\ABC.DLL"的Side-by-Side配置信息包含错误.应用程序无法启动,因为它的并排配置不正确.请参阅应用程序事件日志或使用命令行sxstrace.exe工具获取更多详细信息(14001).

缺少依赖关系MSCVR80.DLL和MSVCP80.DLL.

我已经尝试了以下主题中的所有解决方案,但我仍然遇到同样的错误.

ABC.DLL是在Visual Studio 2005中构建的第三方库,我无法重建它.

我已经安装了Visual Studio C++ 2005 Redistributable,并尝试复制从另一台计算机上获取的DLL(因为我的计算机中没有它)并且没有任何作用.

dependencies msvcrt side-by-side visual-studio-2010 visual-c++

7
推荐指数
1
解决办法
9023
查看次数

如何在不注册dll的情况下对我们的c ++ COM代码进行单元测试?

我们正在尝试将单元测试添加到遗留的c ++ COM应用程序中.我们还需要我们的构建机器能够破坏他的单元测试,以确保每个构建都没有引入错误.但是,我们不希望构建机器必须注册com dlls,以便一台构建机器可以并行构建多个版本.我们假设我们可以改为使用注册免费com与清单文件,但我很难让它工作.不是在我们的代码库上,而是在Microsoft提供的基本示例上.
我一直在使用这个页面http://msdn.microsoft.com/en-us/library/ms973913.aspx#rfacomwalk_topic8 ,当我尝试使用未注册的dll运行使用清单文件时,它根本不起作用,我得到"类未注册错误"

他们提供的样本工作正常(使用c ++ com服务器和c ++客户端),但是当我重建它们时它们不起作用.

我们正在使用Visual Studio 2013,所以它看起来像注册免费com的工作方式发生了很大的变化,这使得本教程与新的编译器不兼容.

任何人都可以向我指出使用最新版本的visual studio免费注册com的资源吗?当我到达那里时,为了进一步使我们自己的应用程序中的内容复杂化,我们正在使用VS 2013,但是针对2010编译器,希望这不会产生很大的差异.

此外,如果有更好的方法在com组件上运行c ++单元测试而不注册清单文件,我也希望听到这些.

谢谢你的帮助.

c++ unit-testing side-by-side visual-studio-2010 registration-free-com

7
推荐指数
1
解决办法
300
查看次数

"激活上下文生成失败"投诉尝试添加应用程序清单

我正在尝试添加一个需要提升到我的.NET 2.0 EXE的应用程序清单.我已经为一个简单的EXE做了这个,它没有任何问题,但是在这个更复杂的EXE上,它不起作用.

我的EXE在我的解决方案中有一个配置文件和许多其他DLL的依赖项.

当我启动EXE时,我收到一个SideBySide错误说" Activation context generation failed for "C:\MyCompany.MyProduct.WinUI.exe".Error in manifest or policy file "C:\MyCompany.MyProduct.WinUI.exe.Config" on line 1. Invalid Xml syntax."

我的配置文件与清单文件有什么关系?这是我的清单:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"
                xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"
                xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="2.10.0.0" name="MyCompany.MyProduct.WinUI"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</asmv1:assembly>
Run Code Online (Sandbox Code Playgroud)

.net manifest side-by-side

6
推荐指数
2
解决办法
1万
查看次数

有谁知道免注册COM和拖放功能之间可能存在哪种关系?

有谁知道免注册COM和拖放功能之间可能存在哪种关系?

具体来说,我们有一个巨大的C++ CAD/CAM应用程序,包括许多EXE和数百个DLL.其中许多用作COM服务器(进程内和进程外)和/或客户端,还实现ActiveX控件.

大多数ActiveX控件和CMDIFrameWnd其中一个EXE 的主要窗口都实现了拖放功能.ActiveX控件实现了drop source和drop target,主窗口只是drop target,特别是来自Windows Explorer的文件.

拖/放实施是非常标准的并且基于来自衍生出的两个数据成员COleDataSourceCOleDropTarget用于分别放置源和放置目标.所述COleDropTarget衍生的部件与在窗口的相应窗口注册OnCreate方法.它还覆盖OnDragEnter,OnDragOverOnDrop以类似的方式方法.即,系统提供的COleDataObject参数被要求特定格式(特别是CF_HDROP),并且在肯定答案的情况下,从剪贴板提取数据(例如,文件路径).代码如下所示:

static FORMATETC g_FileFmt = {CF_HDROP, 0, DVASPECT_CONTENT, 0, TYMED_HGLOBAL};
    ....
// Inside OnDragEnter, OnDragOver or OnDrop method
STGMEDIUM stgmedium = {0,0,0};
if (pDataObject->IsDataAvailable(g_FileFmt.cfFormat))
{
    HRESULT hr = pDataObject->GetData(g_FileFmt.cfFormat, &stgmedium);
    HDROP hdrop = (HDROP)GlobalLock(stgmedium.hGlobal);
    if (hdrop != 0)
    {
        int FilesCount = DragQueryFile(hdrop, (UINT)-1, 0, 0);
        if (FilesCount != 0)
        {
            TCHAR FileName[_MAX_PATH]; …
Run Code Online (Sandbox Code Playgroud)

c++ com manifest side-by-side regfreecom

6
推荐指数
1
解决办法
404
查看次数

注册免费COM可以应用于DLL吗?

目前,我有类似的东西用于免注册COM设置:

  • a.exe(取决于b.dll;不直接依赖c.dll)
  • a.exe.manifest(宣布免注册COM注册c.dll)
  • b.dll(取决于c.dll.例如,.NET TMBIMP生成的COM包装器)
  • c.dll (一些COM实现DLL)
  • c.dll.manifest(免注册COM清单c.dll)

是否可以更改此方案,以便将打开的清单a.exe放在上面b.dll?我希望其他程序能够参考b.dll,如果可能的话,无需在任何地方添加其他清单.

(a.exe.manifest有这个内容:

  <file name="msdia110.dll">
    <comClass description="Debug Information Accessor" clsid="{761D3BCD-1304-41D5-94E8-EAC54E4AC172}" threadingModel = "Both"/>
  </file>
Run Code Online (Sandbox Code Playgroud)

)

c.dll.manifest使用清单工具生成mt.exe.(这里包括的时间太长了)

.net windows com winapi side-by-side

6
推荐指数
1
解决办法
399
查看次数

并排配置错误(Microsoft.VC80.CRT v8.0.50608.0)

我有一个嵌入了以下清单的程序集:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>
Run Code Online (Sandbox Code Playgroud)

在我的一台机器上,这个组件不起作用(组件无法加载).在依赖walker中打开它给我以下错误消息:

Error: The Side-by-Side configuration information for "SomeAssembly.dll" contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (14001).
Run Code Online (Sandbox Code Playgroud)

相同的程序集在另一台机器上工作正常,并且我没有得到依赖walker的错误.

至于我可以工作出了问题是由于第一台机器缺少某种(例如MSVCR可再发行)的依赖,但是我已经检查和微软的Visual C++ 2005可再发行组件安装罚款在两台机器上.

我该如何找出遗漏的依赖是什么?

我注意到的唯一事情是工作机器上的WinSxS目录有一个额外的条目:

x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_473666fd
Run Code Online (Sandbox Code Playgroud)

msvcrt side-by-side

5
推荐指数
1
解决办法
3万
查看次数

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

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

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity type="win32"
                    name="Project1.exe"
                    version="1.0.0.0"
                    processorArchitecture="x86" />
  <dependency>
    <dependentAssembly>
      <assemblyIdentity name="ComWrapper" version="1.0.0.0" processorArchitecture="msil"></assemblyIdentity>
      <clrClass clsid="{3ac3d04e-1f83-4a27-b516-95e38126685d}" progid="MyComObjectNamespace.myclass" threadingModel="Both" name="MyComObjectNamespace.myclass" runtimeVersion=""></clrClass>
      <file name="ComWrapper.dll" hashalg="SHA1"></file>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity name="mscorlib" version="2.0.0.0" publicKeyToken="b77a5c561934e089"></assemblyIdentity>
        </dependentAssembly>
      </dependency>
    </dependentAssembly>
  </dependency>
</assembly>
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

c# vb6 com com-interop side-by-side

5
推荐指数
1
解决办法
1630
查看次数

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

安装了VS2005的新Win7机器.我尝试启动一个使用在Manifest.bin中显示的清单构建的MyApp.exe:

...

<assemblyIdentity type="win32" name="Microsoft.VC80.MFC" version="8.0.50727.4053" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b">
</assemblyIdentity>
Run Code Online (Sandbox Code Playgroud)

...

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

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

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

所以我浏览了winsxs文件夹,确实所有"4053文件夹"都丢失了.然后我编辑了Manifest.bin并用4927替换了4053.错误重新出现了不同的版本.然后我发现我的msvcr80.dll有"4927-folder"但mfc80.dll没有"4927-folder".

两个问题:

- 为什么mfc80.dll没有"4927-folder"?

- 如何获得所有"4053文件夹"?

谢谢和BR -Matti

winsxs manifest side-by-side windows-7

5
推荐指数
1
解决办法
4万
查看次数

什么原因导致SXSTrace错误"StartTrace失败...未知错误"?

我在这里是因为一个sibe-by-side配置错误.当我尝试启动游戏时,会弹出并排配置错误.我尝试了很多不起作用的东西,但后来我找到了这个网站:

http://blogs.msdn.com/b/cesardelatorre/archive/2011/03/27/the-application-has-failed-to-start-because-its-side-by-side-configuration-is-incorrect- error-related-to-mmc-exe-programs-and-weird-cause-amp-simple-solution.aspx.

按照他们的指示,我尝试了命令(在命令提示符下!): sxstrace.exe trace -logfile:C:\ MySxSTrace.log 起初它返回它无法识别这种命令.所以我这样做了:

右键单击计算机 - >高级 - >环境变量 - >系统变量 - >我编辑路径添加C:\ Windows\System32\

要么

http://helpdeskgeek.com/how-to/fix-not-recognized-as-an-internal-or-external-command/

所以它解决了它无法将其识别为内部或ext命令的问题.

但是,我再次尝试了该命令:sxstrace.exe trace -logfile:C:\ MySxSTrace.log 并返回THIS:StartTrace失败.错误消息是:未知错误. 我搜查了一下,发现有人说你不能在根文件夹上放一些东西,完全是胡说八道.因为我没有找到任何东西,我在这个网站上问,因为我认为程序员应该理解那种东西.哦是的,我听说并排配置错误与c ++有关.

是的:

1 - 应用程序无法启动,因为其并排配置不正确.有关详细信息,请参阅应用程序事件日志.

2- StartTrace失败.错误消息是:未知错误.

c++ cmd side-by-side

5
推荐指数
1
解决办法
2533
查看次数