windows azure虚拟机中的并行配置问题

windows azure虚拟机中的并行配置问题,azure,side-by-side,regsvr32,winsxs,Azure,Side By Side,Regsvr32,Winsxs,我正在做一个实验,目的是让一个可执行程序在WindowsAzure上工作 首先,我尝试使用具有windows azure角色(ref)的远程桌面使其工作,我将我的exe复制到远程桌面,还有一些DLL,然后我使用“regsvr32.exe”注册这些DLL,然后问题出现了:“并排配置不正确” 我知道当它在我自己的计算机中时如何解决这个问题(只需确保正确的依赖项位于“winsxs”目录中),但现在它位于使用windows azure角色的远程桌面中,我无权将正确的依赖项添加到winsxs目录中。 所以

我正在做一个实验,目的是让一个可执行程序在WindowsAzure上工作

首先,我尝试使用具有windows azure角色(ref)的远程桌面使其工作,我将我的exe复制到远程桌面,还有一些DLL,然后我使用“regsvr32.exe”注册这些DLL,然后问题出现了:“并排配置不正确”

我知道当它在我自己的计算机中时如何解决这个问题(只需确保正确的依赖项位于“winsxs”目录中),但现在它位于使用windows azure角色的远程桌面中,我无权将正确的依赖项添加到winsxs目录中。 所以我来这里寻求帮助,提前谢谢


PS:我无法更改这些由我的exe引用的DLL。

我想说,问题可能只是因为一些引用DLL不在Azure VM中,所以在部署包(exe+DLL)时,您需要确保所有组件都已在系统中注册。您可以使用RDP登录Azure VM并测试您的部署工作方式,这当然很好,但是最好是通过web/worker部署您的包,在您的can中,worker角色似乎非常适合

您仍然需要进一步挖掘,以找出EXE不起作用的原因,如果您提供有关库和过程的更多详细信息,我们可能会有所帮助,但上述信息无法提供建议

要解决此问题,您应该做以下几点:

  • 创建一个zip文件并包含应用程序所需的所有引用DLL/EXE静态文件
  • 创建工作者角色并将此zip文件添加为内容,并将其属性Copy local设置为true
  • 将CMD批处理文件添加到Azure项目中,并按如下所示编写所有步骤:

    <Runtime executionContext="limited">
     <EntryPoint>
       <ProgramEntryPoint commandLine="your_exe_name.exe" setReadyOnProcessStart="true" />
     </EntryPoint>
    </Runtime>
    
    3.1。将文件解压缩到本地文件夹 3.2. 使用Regsvr32进程注册所有DLL 3.3. 将exe设置为ServiceDefinition.csdef中的ProgramEntryPoint

  • 使用EXE作为ProgramEntryPoint,worker角色主机进程将启动并监视它,设置如下所示:

    <Runtime executionContext="limited">
     <EntryPoint>
       <ProgramEntryPoint commandLine="your_exe_name.exe" setReadyOnProcessStart="true" />
     </EntryPoint>
    </Runtime>
    
    
    

    一旦您有了以上设置,您就可以部署Azure包,然后将RDP部署到Azure VM,并测试您的应用程序是否有任何问题

    只是想确保您知道Windows Azure使用无状态VM。因此,如果出于任何原因回收该VM,则远程桌面在应用程序中所做的任何更改都将丢失。这包括Windows Azure Fabri控制器应用任何来宾操作系统更新的时间。鉴于此,尝试将桌面应用程序移植到WA并不是我的第一选择。同意你的观点,我将尝试使用工作角色来完成这些事情,就像下面的第一个答案一样。但在此之前,我正试图通过虚拟机实现一个原型,我必须确保我的可执行文件可以在Azure虚拟机上运行,而无需修改它(也要确保所有依赖项DLL都已成功注册),然后剩下的事情将很简单(创建一个工人角色,如下面的第一个答案),谢谢您的回答,但在实现工作者角色之前,我正在虚拟机上进行一次尝试,以确定我的旧可执行文件是否可以在不更改它的情况下运行。因此,首先我将EXE和DLL复制到VM中,并尝试使用“regsvr32”注册这些DLL,然后我发现一些DLL由于并行配置问题而无法注册。我使用“dependency walker”()查看我的DLL的依赖项,然后我发现该DLL依赖于“C:\windows\winsxs”目录中的MSVCR80.DLL,这在Azure VM中找不到。我还试图将该MSVCR80.DLL复制到我的DLL所在的目录中,但似乎“regsvr32”拒绝使用这个。你需要下载()安装C++运行时而不是使用复制的MSVCR80.DLL,拷贝将不工作。当你决定使用WorksPrime时,你还需要先下载VC++运行时的启动任务。