适用版本:biztalk 2006

适用环境:开发测试环境

在开发过程中,在开发环境中,一定会是一个对项目不断的修改、编译、部署、测试,查看测试结果,发现有问题,然后回到开发环境再修改、编译、部署、测试的反复过程。所以开发环境的项目设置一定要适合这种反复的重新部署的特点,可以方便的修改,编译,重新部署,修改的内容立即能够生效,然后马上测试。

下面的一些设置注意事项可以帮助biztalk项目在开发环境中达到以上目的

一、 设置强名称程序集的密钥文件

在项目属性页中,在左边的树行结构中选择 “通用属性”-“Assembly”,然后在右面的内容面板中找到“Strong name”-“Assembly Key File”项,在这里点击后面的省略号按钮找到密钥文件(密钥文件怎么生成见biztalk文档)。因为biztalk项目生成的程序集必须安装到GAC中,所以程序集必须是强名称的。

二、 设置项目的部署属性

在项目属性页中,在左边的树行结构中选择 “配置属性”-“Deployment”,然后看右面的内容面板中,各个属性的含义:

Server ―― 把项目部署到哪个服务器,开发环境中,选择本地机器(local)

Configuration database ―― biztalk配置数据库,选BizTalkMgmtDb

Application name ―― 这个项目部署到biztalk中所属的应用程序名,所有属于同一应用的项目(一般就是一个解决方案中的项目)都应该部署到一个应用程序中。

Redeploy ―― 本项目是否可以重新部署。指示如果在GAC中已经有了本项目的程序时是否先删掉已经存在的程序集,然后部署新的程序集。开发环境中选“true”,以便可以反复的重新部署程序集。

Install to Global Assembly Cache ―― 是否将本项目生成的程序集安装到GAC中,当然要,选true

Restart Host Instance ―― 是否重启主机实例。这一个选项特别重要,下面详细解释这个选项。

在dotnet托管环境中,应用程序域是代码隔离的边界,就是说每个应用程序域之间是相互隔离,不能直接通讯,也不会相互干扰的。一般一个应用程序域需要由一个运行库宿主创建,通常是一个exe的文件,这个运行库宿主创建应用程序域,在运行中使用到其他程序集会被加载到这个应用程序域内,用到多少程序集就会加载多少,但是这些被加载的程序集在使用完后不会马上从内存中卸载,必须等整个应用程序域运行完毕后,一起从内存中卸载。

通常Biztalk有两个主机实例:进程内主机实例BizTalkServerApplication,独立进程主机实例BizTalkServerIsolatedHost。BizTalkServerIsolatedHost主机实例是给web services等进程外的服务使用的。一般biztalk项目生成的程序集都会被部署到BizTalkServerApplication实例中。

BizTalkServerApplication主机实例就是一个BTSNTSvc.exe运行库宿主,所以一旦有biztalk项目部署运行后,相关的程序集都会运行在BTSNTSvc.exe创建的一个应用程序域内,并且如果BTSNTSvc.exe服务不停这些程序集就不会被卸载。

Restart Host Instance属性设置为true后,每次重新部署biztalk项目后,biztalk会重新启动BizTalkServerApplication主机实例,原先已经运行的那些程序集也会被卸载。

刚开始学习biztalk的朋友,大多都会碰到一些问题,就是第一次部署biztalk项目后比较顺利,测试运行,发现问题修改后重新部署就会出现几种问题:

1、             部署不成功。因为上面提到的那个“Redeploy”属性没有设置为true。

2、             重新部署后结果还是老样子,好像修改没有起作用。一般都是因为修改前的程序集已经在内存中运行,没被卸载,实际运行的还是老版本的程序集,当然结果也就是老样子。这时重启一下BizTalkServerApplication主机实例即可。或者把上面谈到的Restart Host Instance属性设置为true,让每次重新部署都自动重启一下BizTalkServerApplication主机实例,把原来的程序集从内存中卸载。

三、 配置管理

一般biztalk的解决方案都是有几个项目组成,比如biztalk文档中tutoial 1“Enterprise Application Integration”这个例子,就是由两个项目组成:EAIOrchestrations和EAISchemas。大些的项目还可能包括更多的项目,这时可能需要配置一下,哪些项目是需要生成的,哪些是不用生成的;哪些项目是要部署的,哪些项目是不用部署的。

在解决方案上点击右键,选“配置管理器”,弹出如下窗口:

在需要生成的项目在“生成”那一列打上勾,在需要部署的项目在“部署”那一列打上勾。这样在点击解决方案右键选“生成解决方案”时,就只有设为生成的项目被编译,在点击解决方案右键选“部署解决方案”时,就只有设置了部署的项目被部署。

对于非biztalk的项目,上图中的“ClassLibray1”是一般的类库项目,可以被biztalk项目引用。非biztalk的项目不能被设置为可部署。

四、 biztalk项目的部署

biztalk项目有的地方可以写代码,代码中可以引用一般托管类的代码,所以biztalk解决方案中一般会包含非biztalk项目的类库项目,这些类库项目中的类被biztalk项目中的代码调用。因为biztalk项目的程序集是强名称的,被部署在GAC中,所以被引用的类库的程序集也必须是强名称的并部署到GAC中。

非biztalk项目不能跟biztalk项目一样通过简单设置就能被部署到GAC中,但是可以通过一定的方法做到。以下是Snega (水滴石穿)提供的方案

1、             在类库项目中->属性->生成事件->预生成命令

PATH = C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin

GacUtil /u $(TargetName)

这一设置在生成类库项目前先把原来已经在GAC的本项目的程序集卸载,以便新的程序集装载进GAC。

2、             在类库项目中->属性->生成事件->生成后命令

PATH = C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin

GacUtil /i $(TargetPath)

这一个设置把生成好的类库程序集装载到GAC中。

或者:
在类库项目中->属性->生成事件->生成后命令
REM 先设置适当的环境变量以启用各种命令,其中就有GACUTIL命令所在的“C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin”路径。
CALL "%VS80COMNTOOLS%\vsvars32.bat" > NUL 
REM “if”参数表示将程序集安装到全局程序集缓存中。如果全局程序集缓存中已经存在同名的程序集,全局程序集缓存工具将改写该程序集。
GACUTIL /if "$(TargetPath)"

五、 总结

安装以上所述设置biztalk的项目,修改biztalk项目,重新部署会很方便。

但是有一点要注意,再重新部署一个解决方案时,这个解决方案在biztalk所在的那个应用不要有挂起的实例,有的话把它终止掉然后再进行重新部署。

一般在开发环境中进行修改,然后编译解决方案,重新部署解决方案,就可以测试新的修改的效果了。不用手工去做停止应用、删除应用,重启服务等等工作,这些上面的设置都已经给解决了。

开发环境中biztalk项目设置注意事项(转)的更多相关文章

  1. Webpack中的sourcemap以及如何在生产和开发环境中合理的设置

    一 . 从Sourcemap和Data URL说起 (1)什么是Sourcemap? 我们在打包中,将开发环境中源代码经过压缩,去空格,babel编译转化,最终可以得到适用于生产环境的项目代码,这样处 ...

  2. webpack项目在开发环境中使用静态css文件

    webpack项目在开发环境中使用静态css文件 在webpack项目(本人使用的 vue-cli-webpack )中,需要引入 css 或 scss等样式文件时,本人目前知道的,通常有以下几种方法 ...

  3. Idea开发环境中搭建Maven并且使用Maven打包部署程序

    1.配置Maven的环境变量 a.首先我们去maven官网下载Maven程序,解压到安装目录,如图所示: b.配置M2_HOME的环境变量,然后将该变量添加到Path中 备注:必须要有JAVA_HOM ...

  4. 将linux用在开发环境中

    我是如何将linux用在开发环境中的 1.为什么不直接安装Linux在主机 一直想深入学习一下linux的使用,于是将家里的笔记本装了linux系统,但是要将自己的系统打造一个适合开发的环境确实是一件 ...

  5. 如何将linux用在开发环境中的

    如何将linux用在开发环境中的 1.我为什么要写这篇文章 一直想深入学习一下linux的使用,于是将家里的笔记本装了linux系统,但是要将自己的系统打造一个适合开发的环境确实是一件费心费力的事,而 ...

  6. C# 动态加载组件后怎么在开发环境中调试

    动态加载组件 那就是简单的Assembly.Load动态加载dll而以.这网上资料也有不少.基本的思路基本上就是在本地上一个指定目录如[plugs]存在着一堆dll文件.主程序在初始运行时一般会把指定 ...

  7. 微信小程序开发环境安装以及相关设置配置

    微信小程序开发环境安装以及相关设置配置 一.安装 软件名称:wechat_devtools_1.02.1907232_x64 软件安装地址:https://developers.weixin.qq.c ...

  8. UEditor在开发环境中正常运作,但是部署到Tomcat中却无法使用

    背景 ​ SpringBoot项目,在 JSP 中使用 UEditor 问题 ​ UEditor 在开发环境中正常运作,但是导致部署到 Tomcat 中却无法使用 原因 在开发环境中,路径不够严谨,多 ...

  9. Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕

    Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕 今天会逐行解析一下SparkStreaming运行的日志,运行的是WordCountO ...

随机推荐

  1. C#操作XML文档---基础

    增查改删代码如下 public void CreateXML() { XmlDocument xml = new XmlDocument(); xml.AppendChild(xml.CreateXm ...

  2. C语言中if语句

    C语言if语句后面的表达式 C语言中if关键字之后(即括号内)均为表达式. 该表达式通常是逻辑表达式或关系表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量,这些变量的值都换算成了逻辑 ...

  3. 深入浅出-Android系统移植与平台开发(一)- Android4.0系统的下载与编译

    作者:唐老师,华清远见嵌入式学院讲师. 一.Android4.0系统的下载与编译 Android系统的下载与编译,Google的官方网站上已经给出了详细的说明,请参照Android的官方网址: htt ...

  4. css sprites介绍

    一.CSS Sprites简介 通常被意译为“CSS图像拼合”或“CSS贴图定位”.CSS Sprites并不是一门新技术,目前它已经在网页开发中发展得较为成熟,CSS Sprites并不是什么金科玉 ...

  5. Java中的super与this解析

    好了,现在开始讨论this&super这两个关键字的意义和用法. 在Java中,this通常指当前对象,super则指父类的.当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象 ...

  6. javax.el.PropertyNotFoundException: 异常处理

    javax.el.PropertyNotFoundException: Property 'policyId' not found on type com.omhy.common.model.enti ...

  7. jq制作博客已存在多少天

    function current(){ var d=new Date(),str=''; var date=((d.getMonth()+1)*30+(d.getFullYear())*365+d.g ...

  8. Oracle TDE的数据加密示例并用logminer验证加密效果

    1.确认数据库版本 2创建密钥钱包 3创建加密列的表并初始值 4演示TDE的数据加密示例 5 logminer验证加密效果

  9. 使用Sublime Text 直接运行Quick-cocos2d-x 项目

    一.新建一个编译系统 { "cmd": "D:/WorkSoftWare/Quick/quick-cocos2d-x-3.3rc0/quick/samples/Runni ...

  10. php完全销毁session

    <?php session_start(); session_unset(); session_destroy(); ?> session_unset()释放当前在内存中已经创建的所有$_ ...