使用Visual Studio csproj文件作为MsBuild的输入



我用Visual Studio 2022创建了一个c#控制台应用程序,它只是在控制台上打印一个hello world用于测试目的。现在我正试图使用MSBuild直接在命令行上构建项目。

据我所知,Visual Studio也使用MSBuild,所以一开始我只是试着执行:

"c:Program Files (x86)MSBuild14.0BinMSBuild.exe"  LeoBuildToolsTest.sln

报告错误的XML命名空间。在我解决了这个问题之后,有一个关于丢失目标的问题,这是显而易见的,因为没有:

<Project Sdk="Microsoft.NET.Sdk" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
</Project>

我能够通过MSBuild获得项目构建,但只能使用我手动编写的testproject.proj文件。所以我想问是否有一种方法可以自动生成一个MSBuild项目文件由VS直接用作输入?还是我总是要自己写?

要找到正确的msbuild.exe,您可以使用:

for /f "usebackq tokens=1* delims=: " %%i in (`vswhere -latest -requires Microsoft.Component.MSBuild`) do (
if /i "%%i"=="installationPath" set InstallDir=%%j
)
::  https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-command-line-reference?view=vs-2019
echo InstallDir=%InstallDir%
if exist "%InstallDir%MSBuildCurrentBinMSBuild.exe" (
"%InstallDir%MSBuildCurrentBinMSBuild.exe" -nologo -verbosity:normal yourSolution.sln -property:Configuration=Release
) else (
echo.
echo MSBuild not found!
echo expected in "%InstallDir%MSBuildCurrentBinMSBuild.exe"
echo.
)

我的系统上vswhere.exe的路径是

"C:Program Files (x86)Microsoft Visual StudioInstallervswhere.exe"

相关内容

最新更新