我在发布CI (巡航控制)的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文件都在“发布”文件夹下发布。
当我在解决方案文件中添加另一个服务(让我们称之为"WCF-B")时,问题就出现了。编辑我在WCF中也添加了同样的"BeforeBuild“和"AfterBuild”。/Edit I项目-参考WCF-A从“WCF-B”.但是,当我使用相同的命令构建解决方案时,"WCF-B“的发布工作正常。但是"WCF-A“的跨域文件和svc文件不再被部署。只有"WCF-A“的程序集在”发布\bin“文件夹下发布。
你们知道为什么会这样吗?提前谢谢。
编辑
我认为有“项目引用”会造成这个问题..。但是我需要投影引用,而不是从代理类调用服务。由于这两个服务将托管在同一个服务器上,我更喜欢dll-引用而不是服务调用。
发布于 2011-08-01 16:46:04
看起来WCF-A的文件被WCF-B的BeforeBuild目标删除了(假设发布目录解析到同一个目录),并且程序集WCF-A不能被删除,因为它被WCF-B引用并在使用中。
为了获得更多信息,您可以尝试使用/v:d甚至/v:diag来增加日志的详细程度。
E:\..\Code\>msbuild MyServices.sln /t:Clean;Rebuild /v:dhttps://stackoverflow.com/questions/6894601
复制相似问题