我正在开发 WCF 服务,该服务通过 MSI 包发布到 IIS 网站。我遇到的问题比任何事情都更令人烦恼,但如果可能的话,我仍然想要解决它。
在创建服务时,我们通过右键单击服务主机并选择“发布网站”将其发布到我们的开发服务器。当我们这样做时,将安装以下文件夹结构:
- apsnet_client
- 垃圾桶
在bin
目录中(连同引用服务的 DLL 文件),我有一个名为 的 DLL 文件App_Code.dll
,其中包含我的文件的编译版本Service.cs
,其中包含实际的服务代码。
显然我们不能使用 Visual Studio deploy 进入实时环境,所以我创建了一个 MSI 包来安装它。MSI 仅包含来自我的服务主机的内容文件,没有其他内容。
MSI 安装所需文件时,目录结构略有不同。它没有App_Code.dll
文件,而是简单地在网站内创建一个App_Code
目录并将Service.cs
文件放在其中。这可行,我可以访问该服务,但我真的并不太热衷于让服务实例化代码坐在那里,让任何有权访问服务器的人进行更改。
所以基本上我需要做的是将网站发布的输出包含在我的 MSI 包中,以便我得到预编译App_Code
- 有没有办法做到这一点?在我的解决方案中,没有设置Service.cs
要编译的文件的选项,因此必须有另一种方法。
谢谢。