2013-10-23 76 views
0

我正在使用通过MSI包发布到IIS网站的WCF服务。我所遇到的问题比任何事情都更令人烦恼,但如果可能的话,我仍然想绕过它。使用“发布”通过MSI安装WCF服务Visual Studio输出

虽然我们正在创建的服务,我们的服务主机上单击鼠标右键,然后选择“发布网站”的手段把它发布到我们的开发服务器。当我们这样做,下面的文件夹结构安装:

  • apsnet_client

bin目录(与DLL文件指的是服务一起),我有一个DLL文件名为App_Code.dll,其中包含我的Service.cs文件的编译版本,其中包含实际的服务代码。

显然,我们不能使用Visual Studio部署去到现场的环境,所以我创建了一个MSI包来安装它。 MSI只是从我的服务主机提供内容文件,而没有其他内容。

当MSI安装所需的文件时,目录结构稍有不同。它只是在网站内创建一个App_Code目录,并将Service.cs文件放在该文件中,而不是存在App_Code.dll文件。这可以工作,我可以访问服务,但我真的不太热衷于让服务实例化代码,只是为了访问服务器而修改任何人。

所以基本上我需要做的是将网站发布的输出包含在我的MSI包中,这样我就能得到预编译的App_Code - 有没有办法做到这一点?在我的解决方案中,无法设置要编译的文件Service.cs,所以必须有另一种方法来完成。

谢谢。

回答

1

在我的构建过程中,我使用WebDeploy基础设施,以创建一个使用文件系统WebPublishMethod部署到,我会打电话给“部署”相对目录pubxml文件。这种模式完全按照它的意图来模拟网站。然后,我围绕该结构编写MSI,并添加IIS元数据。

我不知道你用的是什么MSI创作工具,但我喜欢使用Windows Installer XML和/或InstallShield。我说和/或因为我经常使用WiX和IsWiX创建合并模块来表达站点的内容,然后使用InstallShield Limited Edition来描述IIS元数据。

相关问题