Visual studio 2013 Visual Studio-解决方案-工作目录中的2个项目 我在Visual Studio 2013中有一个C++解决方案。 该解决方案包含2个项目。一个是游戏引擎项目,另一个是游戏项目

Visual studio 2013 Visual Studio-解决方案-工作目录中的2个项目 我在Visual Studio 2013中有一个C++解决方案。 该解决方案包含2个项目。一个是游戏引擎项目,另一个是游戏项目,visual-studio-2013,directory,Visual Studio 2013,Directory,启动的默认项目是Game(它是.exe),该项目依赖于Game引擎项目(该项目仅使用.lib) 问题是,GameEngine项目总是使用$(ProjectDir)或游戏的工作目录,我不希望这样。即使它在属性中说它将使用GameEngine文件夹的路径,它最终也不会这样做。 我希望GameEngine项目代码使用GameEngine项目文件的工作目录(当我从文件夹中加载文件或图像时)。 你能帮我解决这个问题吗 项目引用不是这样工作的。我们的想法是在默认项目的$(Outdir)中生成一个完整的工作文

启动的默认项目是Game(它是.exe),该项目依赖于Game引擎项目(该项目仅使用.lib)

问题是,GameEngine项目总是使用$(ProjectDir)或游戏的工作目录,我不希望这样。即使它在属性中说它将使用GameEngine文件夹的路径,它最终也不会这样做。

我希望GameEngine项目代码使用GameEngine项目文件的工作目录(当我从文件夹中加载文件或图像时)。


你能帮我解决这个问题吗

项目引用不是这样工作的。我们的想法是在默认项目的
$(Outdir)
中生成一个完整的工作文件夹-在您的示例
C:\folder\Game\bin\x64\release
或类似项目中-您可以稍后将其打包到安装程序中并分发

您可能希望您的GameEngine项目代码在GameEngine的ProjectDir中运行—在您的示例中是
C:\folder\GameEngine\bin\x64\release
或类似的—因为您希望代码访问该目录中的其他文件。如果是这种情况,您应该使用
Build Action=Content
Copy to Output Directory=Copy If newer
(参见下面的屏幕截图)将这些文件添加到GameEngine.csproj。然后它们将被复制到游戏的
$(Outdir)
,您的代码将能够访问它们


谢谢乔纳森的回复。我使用C++项目,我不确定我有与你的截图中相同的选项。我想包含的“项目”或文件夹包含着色器或纹理,但我没有包含在项目中,它们只是在我的游戏引擎附近的文件夹中。vcxprojYou是对的,我的答案适用于C#项目。这个概念仍然适用-你应该找出是什么让你的文件(着色器等)包含在GameEngine项目中,这样游戏项目就知道如何将它们复制到它的输出目录中。很抱歉,我正在谷歌搜索,我不知道如何将图片包括在“MyFolder/picture.png”中,所以项目中的代码可以引用它,即使该项目在我的解决方案中是库项目。我相信您可以将您的文件包含为库项目。似乎有。你所要求的没有任何意义。lib被链接到最终的可执行文件中,它没有“工作目录”。如果您想在所有链接该.lib的不同游戏之间共享资源,那么只需将它们存储在众所周知的%appdata%子目录中即可。使用生成后事件使用xcopy/d复制那里的文件