有没有办法在 Visual Studio 2019 中配置解决方案文件之外的项目路径?

Is there a way to configure project paths outside of the solution file in Visual Studio 2019?

我正在处理的项目(主项目)有一个 Visual Studio 解决方案。该解决方案引用了主项目需要的另一个项目作为依赖项(依赖项项目)。

解决方案和主项目位于一个目录中:

/mycode/main_project/main_project.sln
/mycode/main_project/main_project.csproj

依赖项目位于不同目录:

/mycode/dependency_project/dependency_project.csproj

这两个项目都在源代码管理之下。我想为不受源代码控制的主项目创建某种配置文件,以便另一个开发人员可以在任何他们想要的地方克隆这两个项目,并简单地编辑一个非源代码控制的配置文件以允许主项目的解决方案找到依赖项项目。

目前主要解决方案是使用相对路径定位依赖项目:

../dependency_project/dependency_project.csproj

如果我强制所有开发人员将这两个项目克隆到同一目录,则主要解决方案将成功 link 到依赖项项目,一切都会很开心。但是,我更希望其他开发人员 可以 将依赖项项目放在他们想要的任何地方。

Visual Studio2019 社区是否支持任何类型的解决方案配置文件,该文件可以被版本控制忽略并用于解析依赖项项目的路径?

解决方案文件非常原始,不提供这种动态功能。但是,如果您不需要 dependency_project 出现在 IDE 中,您仍然可以从 main_project.csproj 中引用它,这确实为您提供了更多选择。即使项目没有出现在解决方案资源管理器中,它也应该可以正常构建。

例如,您可以通过环境变量引用它,如果未设置该变量,则使用默认预期路径:

<PropertyGroup>
  <DependencyProjectPath Condition=" '$(DependencyProjectPath)' == ''>../dependency_project/dependency_project.csproj</DependencyProjectPath>
</PropertyGroup>
<ItemGroup>
  <ProjectReference Include="$(DependencyProjectPath)" />
</ItemGroup>

如果你在打开解决方案之前设置了DependencyProjectPath环境变量(因为VS从它启动的地方继承了环境变量),它会覆盖这里的默认设置(基于Condition属性).