gpt4 book ai didi

.net - 使用 MSBuild 打包 Web 项目

转载 作者:行者123 更新时间:2023-12-01 11:56:55 24 4
gpt4 key购买 nike

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

C:\mysolution.sln.metaproj : error MSB4057: The target "Package" does not exist in the project.

如果我将每个项目一个一个地打包,一切都很好。这是愚蠢和不自然的,我不想在我的 CI 过程中有 5 个额外的步骤。 Package 目标有什么特别之处,以至于 MSBuild 无法像常规 BuildClean 那样执行它?什么是 *.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>

您还可以将名为“全部打包”的 stub “makefile 项目”添加到您的解决方案中,该解决方案直接在上面的 msbuild 项目上调用 MSBuild。构建此 makefile 项目将执行打包步骤。

仅供引用,要查看生成的 metaproj,请将名为 MSBuildEmitSolution 的环境变量设置为值“1”并运行构建,临时文件将被保留。

关于.net - 使用 MSBuild 打包 Web 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6255232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com