Visual Studio 2019 MSBuild将$(SolutionDir)替换为“.”&引用;适用于文件系统中包含的项目,但不适用于Git子模块中包含的项目

Visual Studio 2019 MSBuild将$(SolutionDir)替换为“.”&引用;适用于文件系统中包含的项目,但不适用于Git子模块中包含的项目,msbuild,visual-studio-2019,git-submodules,visual-studio-macros,Msbuild,Visual Studio 2019,Git Submodules,Visual Studio Macros,Visual Studio 2019 MSBuild将$(SolutionDir)替换为“.”,用于文件系统中包含的项目,但不用于Git子模块中包含的项目 例如,下面的项目文件(Project0.csproj)有4个引用的项目 项目1和项目2作为Git子模块签出 项目3和项目4是在与项目0相同的回购协议上创建的 它们都是从$(SolutionDir)开始的,但是一旦VS构建了解决方案,项目3和4的$(SolutionDir)宏就会被替换为“.” 我怎样才能防止这种情况 <ItemGr

Visual Studio 2019 MSBuild将$(SolutionDir)替换为“.”,用于文件系统中包含的项目,但不用于Git子模块中包含的项目

例如,下面的项目文件(Project0.csproj)有4个引用的项目

  • 项目1和项目2作为Git子模块签出
  • 项目3和项目4是在与项目0相同的回购协议上创建的
它们都是从$(SolutionDir)开始的,但是一旦VS构建了解决方案,项目3和4的$(SolutionDir)宏就会被替换为“.”

我怎样才能防止这种情况

 <ItemGroup>
    <ProjectReference Include="$(SolutionDir)\Project1\Project1.csproj">
        <Name>Project1</Name>
    </ProjectReference>
    <ProjectReference Include="$(SolutionDir)\Project2\Project2.csproj">
        <Name>Project2</Name>
    </ProjectReference>
    <ProjectReference Include="..\Project3\Project3.csproj">
        <Name>Project3</Name>
    </ProjectReference>
    <ProjectReference Include="..\Project4\Project4.csproj">
        <Name>Project4</Name>
    </ProjectReference>
</ItemGroup>

项目1
项目2
项目3
项目4

也许您可以将
$(SolutionDir)\Project3\Project3.csproj
作为一个marco,然后将其添加到ProjectReference中。1.在
属性组中添加
$(SolutionDir)\Project3\Project3.csproj
,2。称之为:
@DylanZhu MSFT不走运,在关闭、重新打开解决方案并重建之后,VS 2019(最新更新)仍然将
$(ReferencedProject)
宏替换为“.”