我有一个包含几个项目的解决方案文件,这些项目依赖于同一解决方案中的其他项目。我想在其中一个项目的csproj文件中添加自定义目标,并从命令行构建它。这将允许我制作该项目的所有必要输出二进制文件,以便在构建自定义目标期间进行进一步处理。但主要问题是我无法弄清楚如何做到这一点,即使通过谷歌搜索也没有帮助。
为了简化事情,我决定创建一个新的C#控制台项目,向该项目的文件中添加一个简单的自定义目标,然后尝试构建它。但仍然没有成功!以下是我迄今为止所做的:
Created a solution app with a default console project coreapp. This gaves me at least two files:
- app.sln
- coreapp\coreapp.csproj
Modified coreapp.csproj with addition of my custom target inside of the Project tag
<Target Name="SampleTarget"> <Message Text="This is a SampleTarget" /> </Target>
Run on the command line the following command
%windir%\Microsoft.NET\framework\v3.5\msbuild.exe app.sln /t:coreapp:SampleTarget
or even
%windir%\Microsoft.NET\framework\v3.5\msbuild.exe app.sln /t:coreapp.csproj:SampleTarget
结果
抱歉,遇到了错误:
MSB4057:项目中不存在目标“coreapp.csproj:SampleTarget”。
我怀疑MSBuild
认为我的意图与实际不同......
此外,我还尝试在同一命令行上设置环境变量MSBuildEmitSolution=1,以强制msbuild转储它在处理解决方案时创建的临时解决方案文件。在该文件中,确实没有这样的目标。然而,我想这不是原因,因为我要求msbuild构建包含此SampleTarget目标的coreapp.proj项目。
问题是如何在简化的情况下使用解决方案文件构建SampleTarget,因为它可能包含依赖于包含此SampleTarget目标的项目?
非常感谢任何形式的帮助或进一步调查的方向!