错误MSB4057:项目中不存在目标“Build”

问题描述 投票:0回答:1

我在 .net core 中有一个简单的控制台应用程序,我尝试使用“dotnet build dirs.proj”编译它,但是“我得到:错误 MSB4057:项目中不存在目标“Build”。”

如果有人有任何想法,请分享你的想法!

这是dirs.proj,非常简单。

<Project>
  <Import Project="Directory.Build.props" />
  <Import Project="Directory.Build.targets" />
  <ItemGroup>
    <ProjectFile Include="ConsoleApp1/ConsoleApp1.csproj" />
  </ItemGroup>
</Project>

目标文件没有定义构建。但是,如果我定义了一些东西,那么它就不会做任何事情。

提前感谢您提供任何想法或示例。

.net visual-studio .net-core msbuild
1个回答
0
投票

目标文件没有定义构建。

当您使用像

dotnet build dirs.proj
这样的命令时,dotnet.exe将尝试在
build
文件中查找名为
dirs.proj
的目标。您应该直接在
build target
文件或 dirs.proj 文件中定义
xx.targets
它。否则您会收到错误 MSB4057...

但是,如果我定义了一些类似的东西,它不会做任何事情。

我假设你正在尝试通过命令构建ConsoleApp1项目
dotnet build dirs.proj

,如果是这样,dirs.proj文件中的内容应该是:


<Project> <Import Project="Directory.Build.props" /> <Import Project="Directory.Build.targets" /> <ItemGroup> <ProjectFile Include="ConsoleApp1/ConsoleApp1.csproj" /> </ItemGroup> <Target Name="build"> <Message Text="Custom build starts..." Importance="High"/> <MSBuild Projects="@(ProjectFile)"/> </Target> </Project>

您可以在定义的
build target

中使用msbuild任务,它会为您编译并构建consoleApp1项目。


另外:

1.根据您的脚本,您的目标文件、props 文件和 dirs.proj 文件应位于解决方案目录中

2.如果解决方案目录中有很多项目,可以尝试使用通配符将它们全部包含:

<ItemGroup> <ProjectFile Include="**/*.csproj" /> </ItemGroup>

3.对于msbuild任务,您可以在使用该任务时指定属性。您可以指定输出路径、配置(调试或发布)、程序集名称...

4.请参阅

此文档

,实际上,即使我们不显式导入它们,Directory.Build.props and Directory.Build.targets也会起作用。


希望有帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.