nbu*_*lba 6 msbuild msbuild-task
我正面临一个问题,MSBuild我无法自己克服它.因此,我依靠社区的智慧.
我遇到麻烦的真实情况
我有一个soluiton文件,其中包含几个与同一解决方案中的其他项目相关的项目.我想将一个自定义目标附加到项目的csproj文件之一,并从命令行构建它.它允许我为该项目制作所有必要的输出二进制文件,以便在构建自定义目标期间进行进一步处理.但最主要的是我无法弄清楚如何去做,谷歌搜索也无济于事.
简单化
为了简单起见,我决定创建一个新的C#控制台项目,在项目文件中添加一个简单的自定义目标,并尝试进行构建.仍然没有成功!这是我到目前为止所做的:
使用默认控制台项目coreapp创建了一个解决方案应用程序.这给了我至少两个文件:
修改了coreapp.csproj,并在Project标记内添加了我的自定义目标
<Target Name="SampleTarget">
<Message Text="This is a SampleTarget" />
</Target>
Run Code Online (Sandbox Code Playgroud)在命令行上运行以下命令
%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构建coreapp.proj,其中目标SampleTarget确实存在.
问题是如何使用解决方案文件在这个简化的场景中构建SampleTarget,因为它可能包含包含此SampleTarget目标的项目的依赖项?
我很乐意为进一步调查提供任何帮助或帮助!
您可以尝试创建一个新的独立 msbuild 文件,而不是在项目文件中插入自定义目标,这将:
例如,将其命名为 app-custom-Debug.msbuild 。
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WorkingFolder>$(MSBuildProjectDirectory)</WorkingFolder>
<Configuration>Debug</Configuration>
<SolutionFile>app.sln</SolutionFile>
</PropertyGroup>
<Target Name="Build" DependsOnTargets="Compile" />
<Target Name="Compile">
<Message Text="=== COMPILING $(Configuration) configuration ===" />
<MSBuild Projects="$(SolutionFile)"
Properties="Configuration=$(Configuration)" />
</Target>
<Target Name="SampleTarget">
<Message Text="This is a SampleTarget" />
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
然后你执行:
msbuild.exe app-custom-Debug.msbuild /t:SampleTarget
Run Code Online (Sandbox Code Playgroud)
一种选择是通过覆盖适当的 DependsOn 属性将 SampleTarget 绑定到标准构建目标。在这种情况下,您可以告诉 BeforeBuild 它取决于 SampleTarget,或者您可以对 AfterBuild 执行相同的操作。这将确保 MSBuild 在指示的标准目标之前处理您的目标。
| 归档时间: |
|
| 查看次数: |
7338 次 |
| 最近记录: |