Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#获取.csproj文件的主位置_C#_Visual Studio 2012_Filepath_Solution_Csproj - Fatal编程技术网

C#获取.csproj文件的主位置

C#获取.csproj文件的主位置,c#,visual-studio-2012,filepath,solution,csproj,C#,Visual Studio 2012,Filepath,Solution,Csproj,我正在编写一个类,该类将使用.NET4.5和VisualStudio2012为多个其他项目启动和管理流程。我创建了一个包含两个项目的解决方案:流程可执行文件和流程启动器/管理器。这使两者保持密切关联,并允许多个外部项目通过在各自的解决方案中引用流程管理器来使用流程管理器 process executable and manager的项目结构如下所示: C:\Users\Me\Documents\visualstudio 2012\Projects\ProcessAndManager\Proces

我正在编写一个类,该类将使用.NET4.5和VisualStudio2012为多个其他项目启动和管理流程。我创建了一个包含两个项目的解决方案:流程可执行文件和流程启动器/管理器。这使两者保持密切关联,并允许多个外部项目通过在各自的解决方案中引用流程管理器来使用流程管理器

process executable and manager的项目结构如下所示:

C:\Users\Me\Documents\visualstudio 2012\Projects\ProcessAndManager\ProcessAndManager.sln

C:\Users\Me\Documents\visualstudio 2012\Projects\ProcessAndManager\Process\Process.csproj

C:\Users\Me\Documents\visualstudio 2012\Projects\ProcessAndManager\Manager\Manager.csproj

现在我换到硬币的另一面,我有一个外部项目,希望引用经理,以便使用经理启动这些流程

分别找到了新的解决方案和方案

C:\Users\Me\Documents\visualstudio 2012\Projects\processplaywhere\processplaywhere.sln

C:\Users\Me\Documents\visualstudio 2012\Projects\processplayerly\processplayerly\processplayerly.csproj

在ProcessPlaydy.sln中,我包含了对位于上述位置的Manager.csproj的引用

现在我在新的外部项目中使用管理器,我发现管理器没有指向process.exe文件的正确路径。这是因为在manager类中,我使用此行设置Process.exe的位置

this.executableLocation = Environment.CurrentDirectory + "\\Process.exe";
在原始解决方案中完成后,这将指向可以找到Process.exe的项目箱:

C:\Users\Me\Documents\visualstudio 2012\Projects\ProcessAndManager\Process\bin\Debug

但现在,在从ProcessPlayerd解决方案运行时,该值指向

C:\Users\Me\Documents\visualstudio 2012\Projects\processplaywhere\processplaywhere\bin\debug

其中找不到Process.exe

因此,我需要一种从内部(或其解决方案,我可以使用其中的相对路径)而不是从当前执行位置引用Manager.csproj文件的源位置的方法。这将使部署到任何计算机成为可能


非常感谢所有的帮助,所以提前感谢

所以,如果管理者必须引用流程,那么流程不应该每次都位于与管理者相同的相对位置吗?您是否尝试使用..\\t返回源,是的。但由于我在许多其他解决方案中使用了manager,因此Environment.CurrentDirectory返回的值指向其他解决方案的执行位置,而不是manager的源。@loli沿树向上遍历到公共Visual Studio 2012\Projects文件夹并不是一个完整的解决方案。外部解决方案的位置可以在任何地方。我需要该值才能在不与外部解决方案相关的情况下工作。稍微左字段,但您不能将流程创建为Nuget包吗?然后,您可以将其拉入ProcessPlayed并直接引用exe