发布Web不包含某些依赖项程序集

时间:2013-11-28 05:18:54

标签: mysql wcf web dependencies publish

过去,我一直在使用批处理文件来准备针对不同环境(如测试,登台和制作)的发布包,然后通过各种方式将文件复制到网站文件夹。批处理文件可以运行XmlPreProcess来改变不同环境的web.config。

最近,我在服务器端安装Web Deploy 3后,正在试用VS 2012的发布Web功能。结果看起来对Hello World来说很好。

但是,我有一个WCF应用程序:MyWcfApp.dll依赖于MyWcfContracts.dll和MyWcfImplementation.dll,它依赖于MyData.dll和MySql.Data.dll,是的,我使用的是MySql。所有这些文件都出现在build文件夹中,比如说MyWcfAp \ bin \ Debug。

运行Publish Web时,我收到了一些警告:增量数据库发布不支持此连接字符串的数据库提供程序MySql.Data.MySqlClient。仅对SqlClient以及Entity Framework Code First模型支持增量数据库发布。

然后其他依赖程序集(如MySql.Data.dll)未被复制到服务器。

显然发布Web通过分析Web.config并做了很多假设,做了很多“聪明”的事情。

问题1: 使用Publish Web部署WCF服务是否合适?

问题2: 是否可以运行一些预部署脚本,比如在部署之前运行XmlPreProcess,以便我可以针对不同的环境?

问题3: 是否可以要求Publish Web不要分析Web.config,然后只复制build文件夹中的每个程序集和文件?

1 个答案:

答案 0 :(得分:1)

对于不复制依赖于程序集的特定问题(问题3):

我正在使用一个小型WCF服务应用程序,我将其部署到我的本地文件系统(然后在IIS中托管该站点),并且存在依赖于程序集的问题未被复制到本地文件夹的问题。对我来说,解决方案有两个步骤:

  • 在服务的参考文献中,点亮您需要复制的每个参考文献并点击F4。在新窗口中,确保“Copy Local”设置为“true”。
  • 右键单击服务项目并选择属性。单击“打包/发布Web”部分,然后从“要部署的项目...”下拉列表中选择“此项目文件夹中的所有文件”。