![Msbuild 无法识别映射的网络驱动器](https://linux22.com/image/1307151/Msbuild%20%E6%97%A0%E6%B3%95%E8%AF%86%E5%88%AB%E6%98%A0%E5%B0%84%E7%9A%84%E7%BD%91%E7%BB%9C%E9%A9%B1%E5%8A%A8%E5%99%A8.png)
我们有一个构建项目,并且有一个构建后事件。构建后事件将输出 DLL 复制到目录 F。系统应该将所有 DLL 放在 F 驱动器中。在我的系统中,我无法对驱动器进行分区以添加 F 驱动器,因此我将一个虚拟 F 文件夹映射为 F 驱动器。
F drive -> \\<PC IP>\C$\F\
当我使用 Visual Studio 2008 构建解决方案时,构建后事件成功。但是当我尝试使用命令行 msbuild 构建解决方案时,它失败并显示“指定的驱动器不存在”。有什么想法可以欺骗 powershell 相信 F 驱动器存在吗?我可以使用 Windows 资源管理器正确导航到 F 驱动器,并且正如我之前所说,使用 IDE 时构建后事件成功。
使用的powershell命令行:
msbuild MySolution.sln /p:Configuration=Debug /p:Platform="Any CPU"
请注意,我的系统是 Windows 7 Professional。我尝试使用 Windows XP 执行相同的 msbuild,没有问题。我也以管理员权限运行了命令提示符。
答案1
如果您想在本地计算机上伪造驱动器号,请使用SUBST
映射网络驱动器。
从Subst /?
:
Associates a path with a drive letter.
SUBST [drive1: [drive2:]path]
SUBST drive1: /D
drive1: Specifies a virtual drive to which you want to assign a path.
[drive2:]path Specifies a physical drive and path you want to assign to
a virtual drive.
/D Deletes a substituted (virtual) drive.
因此您应该能够使用类似的东西c:\> subst F: C:\F
。
还要确保您在与 Powershell/MSBuild 运行相同的用户空间中替换驱动器(或映射它)。如果您以本地用户身份映射驱动器,而 MSBuild 以“管理员身份”运行,它将无法看到您的用户映射驱动器(反之亦然)。