我正在使用VS2013和monogame编写一个用C#编写的游戏。但是,monogame不支持XNA内容管道(仍然),因此建议使用Microsoft的XNA和VS2010单独构建您的内容。由于我不想用VS2010等杂乱我的主要开发机器(Win8),我创建了一个Win7虚拟机来运行Win7和VS2010以及构建我的内容所需的所有工具。我的所有项目和解决方案文件都有相应的2010版本,而2010解决方案只有必要的项目来构建内容。
我可以成功构建内容,但前提是它直接存在于VM的硬盘上( C:\ )。如果我将本地驱动器映射到主机上的网络共享并尝试构建,我会收到构建时错误。我为什么要这样做?因为我想要一个源代码树的副本,所以我可以以一个不错的速度迭代。如果我在VM中有一个单独的源代码树,那就太痛苦且容易出错。
这是我得到的构建错误:
Error loading pipeline assembly "S:\Src\ContentPipelineExtension\bin\x86\Debug\Newtonsoft.Json.dll".
我将 S:\ 映射到我的网络共享。 Newtonsoft.Json.dll 存在于指定的路径中。
我试过了:
/verbosity:d
以查看是否输出了更多信息。没有。subst
而不是Windows资源管理器的驱动器映射工具(它可能在幕后使用subst
,但我想确定。)BuildContent
任务之前设置了一个断点。我让两个构建运行直到它们到达这个断点,然后我并排打开本地窗口。我对所有本地人进行了比较,发现除了预期的 C:\ 与 S:\ 路径根之外没有区别。CasPol.exe -m -ag 1.2 -url file://S:\* FullTrust
启用对CAS中网络共享的完全信任。行为没有变化。fuslogvw.exe
)并查看其日志。它说它已经成功加载了组件!<loadFromRemoteSources enabled="true"/>
添加到我的 MSBuild.exe.config 。没有变化。为什么在运行映射的 S:\ 时构建失败,并且当源代码的副本放在我的 C:\ 上时成功?< /强>
更新:我刚刚发现了最糟糕的解决方法。我修改了 ContentPipelineExtension 项目的Output Path
,使其成为 C:\ 上的绝对目录。这样可以使构建成功完成,但显然远非理想。
答案 0 :(得分:0)
这是我用过的黑客。这不是一个令人满意的答案(我不会将其标记为已被接受),但如果没有更好的解决方案,它将为我节省大量的时间和痛苦。
我编辑了我的2010项目文件,并将输出路径更改为:
<OutputPath>$(TEMP)\ContentPipelineExtension\bin\x86\Debug\</OutputPath>
TEMP
环境变量解析为 C:\ 上的文件夹,并节省了我对特定路径进行硬编码的操作。现在,我可以使用与我在主Win8机器中使用的相同源代码树从Win7 VM构建项目。