我在 .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>
目标文件没有定义构建。但是,如果我定义了一些东西,那么它就不会做任何事情。
提前感谢您提供任何想法或示例。
目标文件没有定义构建。
当您使用像
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
也会起作用。
希望有帮助:)