Problem
When a BizTalk Server project is redeployed at the project level within Visual Studio, all artifacts contained within the project that reference the project being redeployed will appear to vanish when the BizTalk Server MMC is refreshed.
Cause
To illustrate the cause of this problem, consider the following example based on a sample BizTalk Server solution where a user wants to redeploy the Maps project. Note that compiling projects yields individual assemblies. The following figure indicates the state of the solution before the user does a redeployment. The relationships among the artifacts are as follows:
-
Orch1, Orch2, Maps, Pipelines, and Schemas are projects.
-
Orch1 references Maps, which in turn references Schemas.
-
Orch2 references Schemas.
-
Pipelines references Schemas.
If the user redeploys the Maps project using the default Visual Studio project settings, the Orch1, Orch2, and Pipeline artifacts vanish, as shown in the following figure.
Redeploying Maps is a two-step process of undeploying the currently deployed Maps.dll assembly, and then deploying the new Maps.dll file. Visual Studio performs these steps automatically as part of the redeployment process.
The preceding sentence is not strictly correct because these are steps that Visual Studio always does so there is no notion of it being the proper way.
The key point is that in order to undeploy a BizTalk Server assembly, Visual Studio has to undeploy all assemblies that are dependent upon that assembly that have the deploy flag set. In our example, to perform the first undeployment step of the redeployment, BizTalk Server needs to undeploy Orch1.dll (which depends on Maps.dll). During the undeployment of Maps.dll, Visual Studio also undeploys Schemas.dll (assuming it has the deploy flag set). In order to undeploy Schemas.dll, Visual Studio needs to undeploy Orch2.dll and Pipelines.dll (both of which depend on Schemas.dll).
A problem exists in that Visual Studio redeploys only Maps.dll and the assemblies that it depends upon: in this case, Schemas.dll. So when the user refreshes the BizTalk Server MMC, the Orch1, Orch2, and Pipeline assemblies seem to have vanished, but Maps.dll and Schemas.dll are still visible.
Resolution
For the main project (that references other projects) do the following:
- In Solution Explorer, right-click the solution node.
- Click Properties to open the Solution Property Pages dialog box.
- Click Configuration Properties, and then click Configuration.
- Clear the Deploy check box for the referenced project.
- In Solution Explorer, execute a new solution-level deployment. To do this, right-click the solution node and then click Deploy Solution.