C# 在映射驱动器上生成失败,但不是本地生成
我正在用VS2013和monogame编写一个用C#编写的游戏。但是,monogame不支持XNA内容管道(仍然),因此建议使用Microsoft的XNA和VS2010分别构建您的内容。因为我不想让我的主要开发机器(Win8)与VS2010等混杂在一起,所以我创建了一个Win7虚拟机来运行Win7以及VS2010以及构建内容所需的所有工具。我的所有项目和解决方案文件都有相应的2010版本,而2010解决方案只有构建内容所需的项目 我可以成功构建内容,但前提是它直接存在于虚拟机的硬盘上(C:\)。如果我将本地驱动器映射到主机上的网络共享并尝试构建,则会出现构建时错误。我为什么要这样做?因为我想要源代码树的一个副本,所以我可以以相当快的速度进行迭代。如果我在虚拟机中有一个单独的源代码树,那就太痛苦了,而且很容易出错 以下是我得到的生成错误:C# 在映射驱动器上生成失败,但不是本地生成,c#,msbuild,xna,monogame,mapped-drive,C#,Msbuild,Xna,Monogame,Mapped Drive,我正在用VS2013和monogame编写一个用C#编写的游戏。但是,monogame不支持XNA内容管道(仍然),因此建议使用Microsoft的XNA和VS2010分别构建您的内容。因为我不想让我的主要开发机器(Win8)与VS2010等混杂在一起,所以我创建了一个Win7虚拟机来运行Win7以及VS2010以及构建内容所需的所有工具。我的所有项目和解决方案文件都有相应的2010版本,而2010解决方案只有构建内容所需的项目 我可以成功构建内容,但前提是它直接存在于虚拟机的硬盘上(C:\)。
Error loading pipeline assembly "S:\Src\ContentPipelineExtension\bin\x86\Debug\Newtonsoft.Json.dll".
我已将S:\映射到我的网络共享。Newtonsoft.Json.dll存在于指定的路径中
我试过:
- 在构建时指定
,以查看是否输出了更多信息。没有/verbosity:d
- 将调试器附加到MSBuild.exe进程,并启用任何异常中断。它从不间断
- 使用
而不是Windows资源管理器的驱动器映射工具(它可能在幕后使用subst
,但我想确定一下)subst
- ,但当我这样做时,我击中了目标
- 对不匹配的leave bug应用了变通方法,并在C:\和S:\上同时调试了构建。在这两种情况下,我都在调用XNA的
任务之前放置了一个断点。我让这两个构建运行,直到它们到达这个断点,然后我并排打开本地窗口。我比较了所有的局部变量,发现除了预期的C:\和S:\路径根之外没有任何区别BuildContent
- 在ILSpy中探索XNA代码,试图找出哪里出了问题,但也没有成功
- 通过执行:
,在CAS中的网络共享上启用完全信任。行为没有改变CasPol.exe-m-ag 1.2-url file://S:\*FullTrust
- 启用Fusion日志查看器(
)并签出其日志。它说它已成功加载程序集李>fuslogvw.exe
- 已将
添加到我的MSBuild.exe.config中。没有变化
更新:我刚刚发现了最糟糕的工作。我修改了ContentPipelineExtension项目的
输出路径
,使其成为C:\上的绝对目录。这使得构建能够成功完成,但显然还远远不够理想。下面是我使用的一个技巧。这不是一个令人满意的答案(我不会将其标记为已接受),但如果没有更好的解决方案,它将为我节省大量的时间和痛苦
我编辑了我的2010项目文件,并将输出路径更改为以下内容:
<OutputPath>$(TEMP)\ContentPipelineExtension\bin\x86\Debug\</OutputPath>
$(TEMP)\ContentPipelineExtension\bin\x86\Debug\
TEMP
环境变量解析为C:\上的一个文件夹,并为我保存一个特定路径的硬编码。现在,我可以从我的Win7 VM中使用与我在主Win8计算机中使用的相同的源代码树来构建项目。使用诊断详细信息,而不是详细信息。@Nick:刚刚尝试过,它不会输出关于特定错误的任何更多信息。我得到了错误前的Task BuildContent
行,因此BuildContent
任务没有输出任何有用的内容。.NET和VS/MSBuild一直试图限制对非本地代码的信任,并且在不同版本中使用了不同的方法。也许这在loadFromRemoteSources
上会有所帮助。@Tom:谢谢。有趣的是,我只是在用CAS做实验。请看我的“尝试”列表中的最后两点。现在查看您链接到的文章。。。