【发布时间】:2011-12-06 17:27:14
【问题描述】:
我遇到了MSBuild 的问题,我自己无法克服。因此,我依靠社区的智慧。
我遇到麻烦的真实情况
我有一个解决方案文件,其中包含多个项目,这些项目依赖于同一解决方案中的其他项目。我想将自定义目标附加到项目的 csproj 文件之一并从命令行构建它。它将允许我为该项目制作所有必要的输出二进制文件,以便在构建自定义目标期间进行进一步处理。但主要是我不知道该怎么做,谷歌搜索也无济于事。
简化
为了让事情变得更简单,我决定创建一个新的 C# 控制台项目,将一个简单的自定义目标添加到项目的文件中并尝试构建它。还是没有成功!这是我到目前为止所做的:
-
使用默认控制台项目 coreapp 创建了一个解决方案应用。这给了我至少两个文件:
- app.sln
- coreapp\coreapp.csproj
-
修改 coreapp.csproj 并在 Project 标签内添加我的自定义目标
<Target Name="SampleTarget"> <Message Text="This is a SampleTarget" /> </Target> -
在命令行上运行以下命令
%windir%\Microsoft.NET\framework\v3.5\msbuild.exe app.sln /t:coreapp:SampleTarget甚至
%windir%\Microsoft.NET\framework\v3.5\msbuild.exe app.sln /t:coreapp.csproj:SampleTarget
结果
不走运,面临错误
MSB4057: The target "coreapp.csproj:SampleTarget" does not exist in the project.
我怀疑MSBuild 的想法与我希望它的想法完全不同...
除此之外,我还尝试在同一命令行上设置环境变量 MSBuildEmitSolution=1 以强制 msbuild 转储它在处理解决方案时创建的临时解决方案文件。在这个文件中,确实没有这样的目标。但是我想这不是原因,因为我要求 msbuild 在目标 SampleTarget 真正所在的位置构建 coreapp.proj。
问题是如何在这个简化的场景中使用解决方案文件构建 SampleTarget,因为它可能包含包含此 SampleTarget 目标的项目的依赖项?
对于进一步调查的任何形式的帮助或建议,我将不胜感激!
【问题讨论】:
-
这有帮助吗? *.com/questions/3397460/…
标签: msbuild msbuild-task