M.k*_*ary 6 build visual-studio visual-studio-2017
目前我有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设置或重新启动它更容易.
缺点:
你需要更多的RAM,在我的情况下我有32GB,我可以为它节省16GB.
如果你重置VS或计算机,你松散编译对象,你必须重建(一次)
但使用RAM磁盘的好处显然超重了它的缺点.
好的,既然我说服了你,为什么我想要这个给我路径:)
可以更改应使用 bin 和 obj 路径的项目文件(至少对于 .NET 应用程序)。但您需要在每个项目上手动更改此设置。如果您签入这些更改,可能会给尝试构建的其他人带来问题。
\n\n相反,您将 bin 和 obj 目录更改为 ramdisk 的符号链接。这不会影响您的项目和解决方案文件(除了 git 可能将此链接视为文件,因此您可能需要将它们添加到 .gitignore 中)。
\n\n我\xe2\x80\x99创建了两个Powershell脚本来管理它。I\xe2\x80\x99m 在与解决方案文件相同的目录中运行它们。请注意,当您运行这些目录时,bin- 和 obj 目录将被删除。
\n\n此脚本将删除所有目录中的 bin 和 obj 文件夹,其中这些文件夹是 csproj 文件,并将它们替换为符号链接:
\n\n$ramDiskDrive = "R:"\n\n# Find all project files...\n$projectFiles = Get-ChildItem -Filter *.csproj -Recurse \n# Get project directories\n$projectDirectories = $projectFiles | ForEach-Object { $_.DirectoryName } | Get-Unique\n\n\n# Create a bin-directory on the RAM-drive\n$projectDirectories | ForEach-Object { New-Item -ItemType Directory -Force -Path "$ramDiskDrive$($_.Substring(2))\\bin" } \n\n# Remove existing bin-directories\n$projectDirectories | ForEach-Object { Remove-Item "$($_)\\bin" -Force -Recurse }\n\n# Link bin-directories to ramdisk\n$projectDirectories | ForEach-Object { cmd /c mklink /D "$($_)\\bin" "$ramDiskDrive$($_.Substring(2))\\bin" }\n\n\n# Create a obj-directory on the RAM-drive\n$projectDirectories | ForEach-Object { New-Item -ItemType Directory -Force -Path "$ramDiskDrive$($_.Substring(2))\\obj" } \n\n# Remove existing obj-directories\n$projectDirectories | ForEach-Object { Remove-Item "$($_)\\obj" -Force -Recurse }\n\n# Link obj-directories to ramdisk\n$projectDirectories | ForEach-Object { cmd /c mklink /D "$($_)\\obj" "$ramDiskDrive$($_.Substring(2))\\obj" }\nRun Code Online (Sandbox Code Playgroud)\n\n该脚本将删除符号链接:
\n\n# Find all project files...\n$projectFiles = Get-ChildItem -Filter *.csproj -Recurse \n# Get project directories\n$projectDirectories = $projectFiles | ForEach-Object { $_.DirectoryName } | Get-Unique\n\n\n# Unlink bin-directories to ramdisk\n$projectDirectories | ForEach-Object { cmd /c rmdir "$($_)\\bin" }\n\n# Unlink obj-directories to ramdisk\n$projectDirectories | ForEach-Object { cmd /c rmdir "$($_)\\obj" }\nRun Code Online (Sandbox Code Playgroud)\n\n如果您运行相同的脚本两次,您将收到错误消息,但这些消息可以被忽略。
\n\n综上所述,根据我的经验,使用 RAM 磁盘而不是 SSD 驱动器没有重大区别。它更快,但没有你想象的那么快。
\n| 归档时间: |
|
| 查看次数: |
689 次 |
| 最近记录: |