运行dotnet应用时如何避免生成bin与obj目录?
提问原文
我正在参考官方.NET Hello World入门教程进行操作,当前项目的两个核心文件内容如下:
# main.csproj 内容 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net5.0</TargetFramework> </PropertyGroup> </Project>
// main.cs 内容 using System; namespace myApp { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } }
我使用的是macOS系统,在存放上述两个文件的目录中执行dotnet run命令时,会自动生成obj和bin目录。请问是否有办法可以在运行应用程序时不生成这两个目录?
相关解答
bin和obj是.NET SDK默认的构建路径,前者存放最终编译生成的可执行文件,后者存放构建过程的临时中间文件、依赖还原的缓存。dotnet run的运行逻辑是先完成完整编译流程,再启动生成的可执行文件,默认流程下一定会在项目目录下创建这两个文件夹。- 如果你不想让这两个目录污染项目源码文件夹,可以通过修改项目配置,把构建路径整体重定向到其他位置:在
main.csproj的PropertyGroup节点中增加两行自定义路径配置,运行时SDK就会把所有构建内容写到指定路径,不会在当前源码目录生成bin、obj:<BaseOutputPath>/tmp/dotnet-myapp-build/bin/</BaseOutputPath> <BaseIntermediateOutputPath>/tmp/dotnet-myapp-build/obj/</BaseIntermediateOutputPath> - 需要注意的是,没有参数可以让
dotnet run完全跳过构建流程、不生成任何中间文件和编译产物。如果完全不想保留任何构建文件,只能绕开dotnet run的默认构建逻辑,手动编译源码后直接运行生成的二进制文件,否则强行关闭这两个目录的生成流程,会导致SDK的版本解析、依赖还原逻辑报错,无法正常运行程序。
内容的提问来源于stack exchange,提问作者user1424739
相关产品推荐
相关产品推荐

