带有DeployOnBuild的MSBuild与Visual Studio Publish之间的差异

带有DeployOnBuild的MSBuild与Visual Studio Publish之间的差异,msbuild,tfsbuild,msdeploy,Msbuild,Tfsbuild,Msdeploy,我有一个WCF项目,如果我使用visualstudio选项“Publish”,它可以很好地发布 但是,如果使用MSBuild参数DeployOnBuild,则无法正确发布它。我收到一个“无法加载类型”错误,所有的de DLL都在那里 我在生成定义中使用MSBuild,以便进行连续集成生成 我使用的构建参数是: /p:DeployOnBuild=true /p:DeployTarget=MSDeployPublish /p:MSDeployPublishMethod=RemoteAgent

我有一个WCF项目,如果我使用visualstudio选项“Publish”,它可以很好地发布

但是,如果使用MSBuild参数DeployOnBuild,则无法正确发布它。我收到一个“无法加载类型”错误,所有的de DLL都在那里

我在生成定义中使用MSBuild,以便进行连续集成生成

我使用的构建参数是:

/p:DeployOnBuild=true 
/p:DeployTarget=MSDeployPublish 
/p:MSDeployPublishMethod=RemoteAgent 
/p:MsDeployServiceUrl=http://host/msdeployagentservice 
/p:username=##### 
/p:password=****
我在这个场景中的主要问题是构建目标是相同的,构建定义实际上发布了文件,但不知何故它们并不相同


有什么见解吗

我不想回答我的问题,但因为这可能会帮助别人,所以这是问题的原因

  • 其中一个项目有一个post-build命令来复制结果 dll到另一个特定于项目的目录(它不是引用 因为它在运行时使用依赖项注入)
  • DLL没有签入TFS,因为它们不是自动签出的
  • 持续集成生成从TFS获取源,并且DLL不同步

  • 解决方案是在构建之前签出DLL,以便签入更新它们

    我实际发现了问题。生成过程将一些DLL复制到项目文件夹中。但是,由于没有在TFS上签出的文件没有在签入中发布。而且,由于持续集成构建只进入TFS存储区,因此文件不同步。好吧,这当然是“设计的”,很高兴您能够正常工作:)