Msbuild 发布解决方案时,是否可以忽略某些项目?

Msbuild 发布解决方案时,是否可以忽略某些项目?,msbuild,publish-profiles,Msbuild,Publish Profiles,我们有一些只在某些环境中使用的项目,所以我希望发布时跳过它们。但是,在发布整个解决方案时,出现以下msbuild错误: "C:\Source\Solution.sln" (default target) (1) -> "C:\Source\Project\Project.csproj" (default target) (51) -> (ValidatePublishProfileSettings target) -> C:\Program Files (x86)\MSBu

我们有一些只在某些环境中使用的项目,所以我希望发布时跳过它们。但是,在发布整个解决方案时,出现以下msbuild错误:

"C:\Source\Solution.sln" (default target) (1) ->
"C:\Source\Project\Project.csproj" (default target) (51) ->
(ValidatePublishProfileSettings target) ->
  C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4253,5): error : The value for PublishProfile is set to 'Sta
ge', expected to find the file at 'C:\Source\Project\Properties\PublishProfiles\Stage.pubxml' but it could not be found. [C:\Source\Project\Project.csproj]
  C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4260,4): error : PublishProfile(Stage) is set. But the $(Web
PublishMethod) does not have a valid value.  Current Value is "". [C:\Source\Project\Project.csproj]
  C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4267,5): error : Target ValidatePublishProfileSettings Faile
d [C:\Source\Project\Project.csproj]
发布解决方案时有没有办法忽略项目,这样我就不会出现生成错误?

我会选择:

  • 自定义构建srcript(为要发布的每个项目分别调用msbuild)(我的首选选项,因此它为您提供了更大的灵活性)
  • 一个自定义的.sln文件,其中仅包含发布所需的项目(更容易选择,但更难维护)

    3.只是一个粗略的猜测(从未在部署中尝试过此方法,但根据我的理解应该可以工作)-如果可以为单独的部署计划创建单独的解决方案配置,可以尝试使用VS中的
    Build->Configuration Manager
    对话框取消选中某些项目的Build复选框:


  • 我试着构建一个单独的项目,但它抱怨缺少项目引用,这大概是解决方案通常会处理的。自定义解决方案似乎是双重工作。发布概要文件的一个好处是[理论上]您可以摆脱特定于环境的构建配置。虽然您的想法可行,但这意味着您必须将发布web.config转换复制到特定于构建的配置。老实说,我倾向于发布到一个被忽略的文件夹,因为除非有更好的解决方案,否则它们是例外。您是否添加了对项目或文件的引用?在生成.csproj/.vbproj文件时,msbuild通常会正确处理项目引用。(但很明显,它无法处理文件引用)我们对项目和文件都有引用。无论哪种方式,我们都有控制台应用程序,而这些应用程序不使用发布配置文件,因此我必须使用特定于环境的构建配置。在这种情况下,我可以取消选中该项目的build。