当前我有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磁盘的好处:(促使我这样做的原因)
缺点:
但是使用RAM磁盘的好处显然会加重它的缺点。
好吧,现在我已经合理地说服了您,为什么我要给我提供路径:)
最佳答案
可以更改应使用bin-path和obj-path的项目文件(至少对于.NET应用程序而言)。但是您需要在每个项目上手动更改此设置。而且,如果您检查这些更改,可能会给尝试构建的其他人带来问题。
相反,您可以将bin和obj目录更改为指向虚拟磁盘的符号链接(symbolic link)。这不会影响您的项目和解决方案文件(除了git可能将此链接视为文件,因此您可能希望将这些链接添加到.gitignore中)。
我创建了两个Powershell脚本来进行管理。我在解决方案文件所在的目录中运行这些文件。请注意,运行这些目录时将删除bin-和obj目录。
该脚本将删除所有csproj文件所在目录中的bin和obj文件夹,并用符号链接(symbolic link)替换它们:
$ramDiskDrive = "R:"
# Find all project files...
$projectFiles = Get-ChildItem -Filter *.csproj -Recurse
# Get project directories
$projectDirectories = $projectFiles | ForEach-Object { $_.DirectoryName } | Get-Unique
# Create a bin-directory on the RAM-drive
$projectDirectories | ForEach-Object { New-Item -ItemType Directory -Force -Path "$ramDiskDrive$($_.Substring(2))\bin" }
# Remove existing bin-directories
$projectDirectories | ForEach-Object { Remove-Item "$($_)\bin" -Force -Recurse }
# Link bin-directories to ramdisk
$projectDirectories | ForEach-Object { cmd /c mklink /D "$($_)\bin" "$ramDiskDrive$($_.Substring(2))\bin" }
# Create a obj-directory on the RAM-drive
$projectDirectories | ForEach-Object { New-Item -ItemType Directory -Force -Path "$ramDiskDrive$($_.Substring(2))\obj" }
# Remove existing obj-directories
$projectDirectories | ForEach-Object { Remove-Item "$($_)\obj" -Force -Recurse }
# Link obj-directories to ramdisk
$projectDirectories | ForEach-Object { cmd /c mklink /D "$($_)\obj" "$ramDiskDrive$($_.Substring(2))\obj" }
该脚本将删除符号链接(symbolic link):
# Find all project files...
$projectFiles = Get-ChildItem -Filter *.csproj -Recurse
# Get project directories
$projectDirectories = $projectFiles | ForEach-Object { $_.DirectoryName } | Get-Unique
# Unlink bin-directories to ramdisk
$projectDirectories | ForEach-Object { cmd /c rmdir "$($_)\bin" }
# Unlink obj-directories to ramdisk
$projectDirectories | ForEach-Object { cmd /c rmdir "$($_)\obj" }
如果您两次运行相同的脚本,则会收到错误消息,但是可以忽略这些错误消息。
综上所述,根据我的经验,使用RAM磁盘而不是SSD驱动器没有太大区别。它速度更快,但没有您期望的那么快。
关于visual-studio - 更改Ram盘的Visual Studio构建路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47071194/