“.net参考程序集”文件夹是否必须在系统驱动器上?

3

在查看Visual Studio的构建时间问题时,我发现使用系统监视器它正在读取大量文件来自.net参考程序集文件夹。

.net参考程序集文件夹位于系统驱动器上,这是一个普通的驱动器; 但是我们在每台机器上都有SSD。那么我能把它移到SSD上吗?


你可以将这些文件移动到SSD,并从原始目录创建一个联接点到新目录(使用mklink或类似工具)。 - Joe
4
如果可能的话,将SSD作为系统驱动器可能会在各方面都带来明显的改善。 - Tim M.
1个回答

0
老实说,我更喜欢Tim Medora的方法,因为它更干净,并且会给你全面的提升。我刚刚在我的工作笔记本电脑上安装了SSD,效果非常棒。
然而,如果你真的想要,我认为你可以复制系统驱动器上的引用程序集。我不认为Microsoft支持这样做,但我认为它是可行的。
我在阅读了ResolveAssemblyReference是与该引用程序集文件夹最相关的任务后,在Microsoft.Common.targets中进行了一些挖掘。
然后我发现了这个(我特别查看了3.5,x64版本):
<!--
============================================================
                                    GetReferenceAssemblyPaths

Get the paths for the Reference Assemblies for the known versions of the
.NET Framework.

These paths are used by the build process in order to resolve the correct
assemblies from the various directories, and to support multi-targeting
============================================================
-->
<PropertyGroup>
    <GetReferenceAssemblyPathsDependsOn></GetReferenceAssemblyPathsDependsOn>
</PropertyGroup>
<Target
    Name="GetReferenceAssemblyPaths"
    DependsOnTargets="$(GetReferenceAssemblyPathsDependsOn)">

    <!-- Ordering of target framework directories doesn't matter except for assemblies
         that aren't in a redist list; for those, make sure we order 3.5, 3.0, 2.0 -->

    <PropertyGroup Condition=" '$(TargetFrameworkVersion)' == 'v3.0' or '$(TargetFrameworkVersion)' == 'v3.5' ">        
        <TargetFrameworkDirectory>$(WinFXAssemblyDirectory);$(TargetFrameworkDirectory)</TargetFrameworkDirectory>
    </PropertyGroup>

    <PropertyGroup Condition=" '$(TargetFrameworkVersion)' == 'v3.5' ">        
        <TargetFrameworkDirectory>$(Registry:HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders\v3.5@All Assemblies In);$(TargetFrameworkDirectory)</TargetFrameworkDirectory>
    </PropertyGroup>

</Target>

请注意TargetFrameworkDirectory属性的注册表位置 - 它确实指向了该引用程序集文件夹。
我看到有3个选项 - 可能还有其他选项:
  1. 更改适用于.NET版本的相应.targets文件,并硬编码系统路径
  2. 更改注册表项(这可能会导致不良副作用)
  3. 尝试使用MSBuild在构建时覆盖TargetFrameworkDirectory的值
好奇看看这是否对您有用!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接