c# .NetStandard 项目的 *.sln *.csproj 文件中的相对路径
Relative paths in *.sln *.csproj files of c# .NetStandard project
基本上就是标题所说的那样。我有一个 .NetStandard 库,我正在使用 windows 和 linux。我的问题是参考路径已完全指定。
假设在这种情况下,我有 4 个项目,每个项目都有自己的文件夹和 git 存储库。项目 1 引用项目 2、3 和 4;项目 2 和 3 参考项目 4。linux 和 windows 上的项目文件夹结构相同,但用户配置文件路径变量不同。
|-项目 1
|
|-项目2
|
|-项目3
|
|-项目 4
我可以在 .sln 和 .csproj 文件中指定相对路径吗?如果有怎么办?
您可以将相对于 .sln 或 .*proj 的路径放在它们各自的文件中。我刚刚打开了我们公司正在使用的 .sln 和 .*proj,它看起来像这样。这些是 Visual Studio 在将项目添加到解决方案时为我们自动生成的。
.sln
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BL", "BL\BL.csproj", "{DF73AB2C-7331-49FD-8B4A-F71DAC66198A}"
EndProject
.*proj
<ProjectReference Include="..\..\..\BL\BL.csproj">
<Project>{df73ab2c-7331-49fd-8b4a-f71dac66198a}</Project>
<Name>BL</Name>
</ProjectReference>
在*.csproj
中您可以定义属性。
定义一个 属性 MyStuffDir
值 $(ProjectDir)..\..\_MyFolder\
.
<PropertyGroup>
<MyStuffDir>$(ProjectDir)..\..\_MyFolder\</MyStuffDir>
</PropertyGroup>
$(ProjectDir)
是当前csproj-file
所在的文件夹。更多 "Macros" 可用,例如参见构建事件 "PreBuildSteps" 和 "PostBuildSteps"。 $(SolutionDir)
是放置 sln-file
的地方。
HINT 我更喜欢使用 $(ProjectDir)
,因为当我只构建一个项目而不是整个解决方案时,它也适用于带有 msbuild 的 CLI。
在 csproj 文件的项目组内使用 $(MyStuffDir)
,因此您相对于项目级别。
<ItemGroup>
<Compile Include="$(MyStuffDir)AssemblyVersion.cs">
<Link>Properties\AssemblyVersion.cs</Link>
</Compile>
</ItemGroup>
基本上就是标题所说的那样。我有一个 .NetStandard 库,我正在使用 windows 和 linux。我的问题是参考路径已完全指定。
假设在这种情况下,我有 4 个项目,每个项目都有自己的文件夹和 git 存储库。项目 1 引用项目 2、3 和 4;项目 2 和 3 参考项目 4。linux 和 windows 上的项目文件夹结构相同,但用户配置文件路径变量不同。
|-项目 1 | |-项目2 | |-项目3 | |-项目 4
我可以在 .sln 和 .csproj 文件中指定相对路径吗?如果有怎么办?
您可以将相对于 .sln 或 .*proj 的路径放在它们各自的文件中。我刚刚打开了我们公司正在使用的 .sln 和 .*proj,它看起来像这样。这些是 Visual Studio 在将项目添加到解决方案时为我们自动生成的。
.sln
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BL", "BL\BL.csproj", "{DF73AB2C-7331-49FD-8B4A-F71DAC66198A}"
EndProject
.*proj
<ProjectReference Include="..\..\..\BL\BL.csproj">
<Project>{df73ab2c-7331-49fd-8b4a-f71dac66198a}</Project>
<Name>BL</Name>
</ProjectReference>
在*.csproj
中您可以定义属性。
定义一个 属性 MyStuffDir
值 $(ProjectDir)..\..\_MyFolder\
.
<PropertyGroup>
<MyStuffDir>$(ProjectDir)..\..\_MyFolder\</MyStuffDir>
</PropertyGroup>
$(ProjectDir)
是当前csproj-file
所在的文件夹。更多 "Macros" 可用,例如参见构建事件 "PreBuildSteps" 和 "PostBuildSteps"。 $(SolutionDir)
是放置 sln-file
的地方。
HINT 我更喜欢使用 $(ProjectDir)
,因为当我只构建一个项目而不是整个解决方案时,它也适用于带有 msbuild 的 CLI。
在 csproj 文件的项目组内使用 $(MyStuffDir)
,因此您相对于项目级别。
<ItemGroup>
<Compile Include="$(MyStuffDir)AssemblyVersion.cs">
<Link>Properties\AssemblyVersion.cs</Link>
</Compile>
</ItemGroup>