我正在将公司产品从 .Net 4.8 移植到 .Net core 6 中。在解决方案中,有一个输出目录,其中包含:Assemblies、Configuration、Log、Resources 目录,并且只有启动器项目的 .exe、.pdb 和 .exe.config。Dll 在 Assemblies 目录中,我绝对需要复制相同的结构。
在启动器项目 .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,如果我从输出目录中手动删除 dll,应用程序可以工作,但我需要比构建后删除脚本更“优雅”的东西(构建后事件) .