svc,xml没有被部署

时间:2011-08-01 05:46:55

标签: wcf msbuild

我在从CI(Cruise Control)发布WCF服务时遇到问题。

假设我有一个名为“WCF-A”的WCF项目。我将以下行放在“WCF-A”的csproj中

<Target Name="BeforeBuild">
    <Message Text="##############Before build##################" Importance="high" />
    <RemoveDir Directories="publish" ContinueOnError="true" />
  </Target>
  <Target Name="AfterBuild">
    <Message Text="##############After build##################$(OutputFolder)" Importance="high" />
    <MSBuild Projects="$(ProjectName).csproj" Targets="ResolveReferences;_CopyWebApplication" Properties="WebProjectOutputDir=publish\;OutDir=publish\bin\" />
</Target>

我正在使用以下命令从命令行构建我的服务。 (请注意,我们正在使用CI,但为了使我的问题变得简单,我将使用命令行。)

E:\..\Code\>msbuild MyServices.sln /t:Clean;Rebuild

它完美运行,所有程序集,跨域xml,svc文件都发布在“publish”文件夹下。

当我在解决方案文件中添加其他服务(我们称之为“WCF-B”)时,问题就出现了。 [编辑] 我在WCF-B中添加了相同的“BeforeBuild”和“AfterBuild”。 [/ Edit] 我从“WCF-B”项目引用了WCF-A ......但是当我使用我使用的相同命令构建解决方案时,“WCF-B”的发布是工作正常。但是不再部署“WCF-A”的跨域文件和svc文件。只有“WCF-A”的汇编才会在“publish \ bin”文件夹下发布。

你们有没有想过为什么会这样?提前致谢。

修改

我认为“项目引用”会产生这个问题 ..但我需要项目引用而不是从代理类调用服务。由于两个服务都将托管在同一台服务器上,因此我更喜欢通过服务调用进行dll-reference。

1 个答案:

答案 0 :(得分:0)

看起来好像WCF-A的BeforeBuild目标正在删除WCF-A的文件(假设发布目录解析到同一目录)并且程序集WCF-A无法删除,因为它由WCF-B引用并在使用中。

您可以尝试使用/v:d甚至/v:diag来提高日志详细程度,以获取更多信息。

E:\..\Code\>msbuild MyServices.sln /t:Clean;Rebuild /v:d