c#.NetStandard项目的{.sln * .csproj文件中的相对路径

时间:2018-03-25 14:51:13

标签: c# .net-standard

基本上标题是什么。我有一个.NetStandard库,我正在从Windows和Linux工作。我的问题是参考路径是完全指定的。

让我们说在这种情况下,我有4个项目,每个项目都有自己的文件夹和git存储库。项目1参考了项目2,3和4;项目2和3参考项目4.项目文件夹结构在linux和windows上都相同,但用户配置文件路径变量不同。

| - 项目1 | | - 项目2 | | - 项目3 | | - 项目4

我可以在.sln和.csproj文件中指定相对路径吗?如果是这样的话?

2 个答案:

答案 0 :(得分:1)

You can put paths that are relative to the .sln or .*proj in their respective files. I just opened up the .sln and .*proj our company is using an it looks like this. These were auto generated by Visual Studio for us when adding projects to the solution.

.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>

答案 1 :(得分:0)

*.csproj中,您可以定义属性。

定义值为MyStuffDir的属性$(ProjectDir)..\..\_MyFolder\

<PropertyGroup>
    <MyStuffDir>$(ProjectDir)..\..\_MyFolder\</MyStuffDir>  
</PropertyGroup>

$(ProjectDir)是放置当前csproj-file的文件夹。可用的“宏”更多,例如,参见构建事件“ PreBuildSteps”和“ PostBuildSteps”。 $(SolutionDir)是放置sln-file的位置。

提示,我更喜欢使用$(ProjectDir),因为当我只构建一个项目而不是整个解决方案时,它也可以在具有msbuild的CLI上使用。

在csproj文件的项目组内使用$(MyStuffDir),因此您相对于项目级别。

<ItemGroup>
    <Compile Include="$(MyStuffDir)AssemblyVersion.cs">
      <Link>Properties\AssemblyVersion.cs</Link>
    </Compile>
</ItemGroup>