我在.net核心中有一个简单的控制台应用程序,我尝试使用“ 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>
目标文件未定义内部版本。但是,如果我定义类似的内容,则不会执行任何操作。
提前感谢任何想法或示例。
答案 0 :(得分:0)
目标文件未定义内部版本。
当您使用诸如dotnet build dirs.proj
之类的命令时,dotnet.exe会尝试在build
文件中查找名为dirs.proj
的目标。您应该在build target
文件或dirs.proj
文件中直接直接定义xx.targets
。否则您会收到错误MSB4057 ...
但是,如果我定义类似的东西,它什么也没做。
我假设您正在尝试通过命令dotnet build dirs.proj
构建ConsoleApp1项目,如果这样,则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 task,它将为您编译并构建consoleApp1项目。
此外:
1。根据脚本,目标文件,道具文件和dirs.proj文件应位于解决方案目录中
2。如果解决方案目录中有许多项目,则可以尝试使用通配符将它们全部包括在内:
<ItemGroup>
<ProjectFile Include="**/*.csproj" />
</ItemGroup>
3。对于msbuild任务,可以在使用此任务时指定属性。您可以指定输出路径,配置(调试或发布),程序集名称...
4。参见this document,实际上Directory.Build.props and Directory.Build.targets
是可以工作的,即使我们没有明确地导入它们。
希望它会有所帮助:)