首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用MSBuild封装web项目

用MSBuild封装web项目
EN

Stack Overflow用户
提问于 2011-06-06 16:41:00
回答 2查看 4K关注 0票数 3

我有一个包含5个web项目的解决方案,并且希望它们被打包,所以我在构建它之后运行msbuild mysolution.sln /t:Package并得到以下内容:

C:\mysolution.sln.metaproj : error MSB4057:目标“包”不存在于项目中。

如果我把每个项目一个一个地打包,一切都是好的。这是愚蠢和不自然的,我不想有5个额外的步骤在我的CI过程。Package目标有什么特别之处,以至于MSBuild不能像普通BuildClean那样执行它?*.sln.metaproj是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-06 17:22:06

.sln.metaproj文件由MSBuild自动生成,同时尝试构建解决方案文件。创建此文件是因为解决方案文件不是MSBuild项目。在此生成的文件中是自动创建的标准tarets构建、清理等,而不是包。您最好的选择可能是从使用解决方案文件切换到使用引用项目的MSBuild文件。它可能看起来像这样:

代码语言:javascript
复制
<Project ...>
   <ItemGroup>
      <Project Include="Project1.csproj" />
      <Project Include="Project2.csproj" />
      <Project Include="Project3.csproj" />
      <Project Include="Project4.csproj" />
      <Project Include="Project5.csproj" />
   </ItemGroup>
   <Target Name="Package">
      <MSBuild
         Projects="@(Project)"
         Targets="Package"
         Properties="Configuration=$(Configuration);Platform=$(Platform);..."
         />
   </Target>
   ...etc. for Build, Clean etc.
</Project>

您还可以将一个名为"Package“的存根"makefile项目”添加到您的解决方案中,直接在上面这样的MSBuild项目上调用msbuild。构建这个makefile项目将执行包步骤。

要查看生成的元file,将一个名为MSBuildEmitSolution的环境变量设置为'1‘并运行一个构建,则临时文件将被保留。

票数 5
EN

Stack Overflow用户

发布于 2016-09-14 08:58:16

在TeamCity中,我将作为命令行参数添加到构建/p:IsPackaging=true

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6255232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档