Use*_*rol 3 .net msbuild build-process
我有一个包含5个Web项目的解决方案,并希望它们打包,所以我msbuild mysolution.sln /t:Package在构建它之后运行并得到这个:
C:\ mysolution.sln.metaproj:错误MSB4057:项目中不存在目标"包".
如果我逐个打包每个项目一切都很好.这是愚蠢和不自然的,我不想在我的CI过程中有5个额外的步骤.有什么特别之处Package目标是的MSBuild不能像常规执行它Build还是Clean?什么是*.sln.metaproj?
.sln.metaproj文件由MSBuild在尝试构建解决方案文件时自动生成.创建此文件是因为解决方案文件不是MSBuild项目.在这个生成的文件中自动处理标准的Tarets Build,Clean等,但不是Package.您最好的选择可能是从使用解决方案文件切换到使用引用项目的MSBuild文件.它可能看起来像这样:
<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>
Run Code Online (Sandbox Code Playgroud)
您还可以将一个名为"Package All"的存根"makefile项目"添加到您的解决方案中,该解决方案直接在msbuild项目上调用MSBuild,如上所述.构建此makefile项目将执行包步骤.
仅供参考,要查看生成的元项目,将名为MSBuildEmitSolution的环境变量设置为值"1"并运行构建,将保留临时文件.
| 归档时间: |
|
| 查看次数: |
3798 次 |
| 最近记录: |