我在解决方案中有一个c#asp.net网站项目(VS 2008)。在这个解决方案中,有6个c#类库项目,每个项目都有wcf服务类。
所有6个类库项目dll都在asp.net网站项目中引用,它显示在bin目录中。所以这个asp.net网站是我们的wcf服务的托管服务器。我的一个c#class lib项目正在使用一个C ++ dll,它在应用程序中调用另一个C#COM dll。因此,使用Regasm.exe将此C#COM dll注册为COM,并使用P / Invoke加载C ++,并且它们都在开发环境中工作。
现在,我想要设置此服务器应用程序,并需要在IIS 7.5(Win 7 32位操作系统)中托管它。我从Internet下载了Web部署工具,并使用VS Web Setup and Deployment项目创建了设置。我无法通过SetUp在安装机器中注册C#COM dll。
在安装项目中,我添加了C#COM dll(myCOM.dll)。当我将myCOM.dll添加到Web安装项目的Web文件夹中时,它会添加另外两个文件,例如myCOM.DLL和myCOM.tlb以及myCOM.dll。
我尝试了以下方法:
第一种方法:
我删除了myCOM.DLL和myCOM.tlb。然后我选择了myCOM.dll并在属性窗格中设置了Register vsdrCOM。
然后我安装在一台机器上。但myCOM.dll未注册,并且未在Application Folder / bin文件夹中生成tlb文件。我不知道为什么???
第二种方法。
我创建了一个批处理文件,其中包含从批处理文件的当前位置注册dll的命令,如下所示:
ECHO注册开始......
PAUSE
Regasm.exe“myCOM.dll”/tlb:myCOM.tlb \ codebase - > [这将在myCOM.dll的相同位置生成tlb]
然后我创建了一个自定义安装程序,并将此安装程序添加为设置项目中的自定义操作。 [安装自定义操作]。在此安装程序类中,我重写了Install方法并编写了用于从位置C:\ inetpub \ wwwroot \ MyApp \ bin执行批处理文件的代码。
然后我尝试将其安装在一台机器上。安装时,批处理(cmd)的控制台窗口会显示一秒钟,然后突然关闭cmd窗口。安装完成后,我查看了c:\ inetpub \ wwwroot \ MyApp \ bin文件夹,没有任何内容。
我的安装可能会出现什么问题???
请注意一下。