繁体   English   中英

.Net core 6:如何在没有程序集的情况下拥有 output 目录

[英].Net core 6: How to have output directory without assemblies

我正在将公司产品从.Net 4.8 移植到.Net core 6 中。 在解决方案中,有一个 output 目录,其中包含:Assemblies、Configuration、Log、Resources 目录以及启动器项目的 only.exe、.pdb 和.exe.config。 Dll 在 Assemblies 目录中,我绝对需要复制相同的结构。

在启动器 project.csproj 文件中,我们设置了:

<OutputPath>$(SolutionDir)\$(Configuration)</OutputPath>

在其他方面:

<OutputPath>$(SolutionDir)\$(Configuration)\Assemblies</OutputPath>

在编译过程中,VS Studio Professional 2022 继续复制 ProjectReference 包含的项目的.dlls/.pdbs,并递归地越来越多地复制所有.dlls。 为了避免这种行为,我尝试了很多方法,例如使用所有这些属性(也在不同的设置组合中:无,全部,编译......)但问题仍然存在:

<CopyLocalLockFileAssemblies>
<CopyLocal>
<CopyLocalSatelliteAssemblies>
<IncludeAssets>
<ExcludeAssets>
<PrivateAssets>
<AppendTargetFrameworkToOutputPath>

目前,我正在构建 windows 但将来也会有一些 linux 机器必须构建解决方案,所以我需要一种适用于所有环境的方法。

有可能做到吗?

加载程序集不是问题,我已经修改了 AssemblyLoadContext.Default.Resolving,如果我从 output 目录中手动删除 dll,应用程序可以工作,但我需要比构建后删除脚本更“优雅”的东西。

当您提到“构建后删除脚本”时,是否暗示使用构建后事件调用了一个? 我意识到这可能与您的想法不完全一样,因为它实际上是一个脚本,每次构建项目后都会调用它。

尽管如此,它与手动运行脚本并不完全相同,所以如果您在寻找更好的选项时遇到困难,这可能是一种替代方法吗?

打开项目的属性,然后查找:
您可能还想查看构建事件的文档

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM