gpt4 book ai didi

visual-studio - 更改 Ram 磁盘的 Visual Studio 构建路径

转载 作者:行者123 更新时间:2023-12-04 16:05:18 27 4
gpt4 key购买 nike

目前我有 Visual Studio 17 V 15.4.2

是否可以为项目设置不同的构建路径?例如,而不是
C:\Users\[UserName]\source\repos\[MyProject]\[bin|obj]
继续
M:\Users\[UserName]\source\repos\[MyProject]\[bin|obj]
请注意,它自己的项目在 C 内但临时文件被移动到其他地方。我有驱动器M这是一个 16GB 的 RAM 磁盘。

使用 RAM 盘的好处: (诱使我这样做的原因)

  • 更快的构建时间(没有真正的 IO)
  • SSD 不会因重复重建而磨损。
  • 项目本质上是清理的(带来以下好处)
  • 共享速度更快,您的项目不会充满不必要的文件,因此您可以轻松地与他人共享文件夹。 (代码大小通常小于 1MB,但构建对象可以超过 1GB)
  • 快速备份,出于同样的原因,您的项目文件夹始终保持清理状态,您可以更快地备份项目。 (尤其是当您有很多项目时,例如,您只会备份 100MB 而不是 10GB)
  • 创建锁定文件的机会更少。 (这会导致构建不同步、错误等)在这种情况下格式化 ramdisk 比使用 VS 设置或重新启动它更容易。

  • 缺点:
  • 你需要更多的内存,就我而言,我有 32GB,我可以为它腾出 16GB。
  • 如果您重置 VS 或计算机,您会丢失已编译的对象,您必须重建(一次)

  • 但是使用 RAM 磁盘的好处显然超过了它的缺点。

    好的,现在我已经合理地说服了你为什么我想要这个给我路径:)

    最佳答案

    “obj”目录的完全工作解决方案

  • 创建指向您的 ramdrive 的 EnviromentVariable BUILD_RAMDRIVE。
  • 在您的解决方案目录中创建“Directory.Build.props”文件,其中包含以下内容:
  • <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
    <BuildRamdrive>$([System.Environment]::GetEnvironmentVariable("BUILD_RAMDRIVE",System.EnvironmentVariableTarget.Machine))</BuildRamdrive>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(BuildRamdrive)' != '' AND '$(MSBuildProjectFile)' != ''">
    <BaseIntermediateOutputPath>$(BuildRamdrive)\Projects\$(SolutionName)\$(MSBuildProjectFile)\obj\</BaseIntermediateOutputPath>
    <IntermediateOutputPath>$(BuildRamdrive)\Projects\$(SolutionName)\$(MSBuildProjectFile)\obj\$(Configuration)\</IntermediateOutputPath>
    <MSBuildProjectExtensionsPath>$(BuildRamdrive)\Projects\$(SolutionName)\$(MSBuildProjectFile)\obj\</MSBuildProjectExtensionsPath>
    </PropertyGroup>
    </Project>

    就这样 :-)
    此 MSBuild 脚本从您的计算机中获取 BUILD_RAMDRIVE 环境变量。然后将此解决方案内所有项目的所有obj文件重定向到$BUILD_RAMDRIVE\Projects\$(SolutionName)\$(MSBuildProjectFile)\obj\目录
    如果您的计算机没有 BUILD_RAMDRIVE 环境变量,它将什么也不做。

    关于visual-studio - 更改 Ram 磁盘的 Visual Studio 构建路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47071194/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com