首页 > 解决方案 > 错误 MSB4057:项目中不存在目标“Build”

问题描述

我在 .net 核心中有一个简单的控制台应用程序,我尝试使用“dotnet build dirs.proj”对其进行编译,但“我得到:错误 MSB4057:项目中不存在目标“构建”。”

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

这是dirs.proj,很简单。

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

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

在此先感谢您提供任何想法或示例。

标签: .netvisual-studio.net-coremsbuild

解决方案


目标文件没有定义构建。

当您使用类似命令时dotnet build dirs.proj,dotnet.exe 将尝试查找文件中命名的build目标dirs.proj。您应该直接在文件或文件中定义build target它。否则你会得到错误 MSB4057...dirs.projxx.targets

但是,如果我定义的东西就像它不会做任何事情。

我假设您正在尝试通过 command 构建 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>

您可以在定义中使用msbuild 任务build target,它将为您编译和构建 consoleApp1 项目。

此外:

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

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

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

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

4.看这个文件,实际上Directory.Build.props and Directory.Build.targets即使我们不明确导入它们也能起作用。

希望能帮助到你 :)


推荐阅读