【问题标题】:Publish Web does not include some dependency assembliesPublish Web 不包含某些依赖程序集
【发布时间】:2013-11-28 05:18:53
【问题描述】:

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

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

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

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

然后其他依赖的程序集,例如 MySql.Data.dll 没有被复制到服务器。

显然 Publish Web 通过分析 Web.config 和有很多假设做了很多“聪明”的事情。

问题 1: 使用Publish Web部署WCF服务好不好?

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

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

【问题讨论】:

    标签: mysql wcf web dependencies publish


    【解决方案1】:

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

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

    • 在服务的引用中,突出显示您需要复制的每个引用并按 F4。在新窗口中,确保“复制本地”设置为“真”。
    • 右键单击服务项目并选择属性。点击“打包/发布 Web”部分,然后从“要部署的项目...”下拉菜单中选择“此项目文件夹中的所有文件”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-01
      • 1970-01-01
      • 2014-01-31
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 2011-12-12
      相关资源
      最近更新 更多