基本上标题是什么。我有一个.NetStandard库,我正在从Windows和Linux工作。我的问题是参考路径是完全指定的。
让我们说在这种情况下,我有4个项目,每个项目都有自己的文件夹和git存储库。项目1参考了项目2,3和4;项目2和3参考项目4.项目文件夹结构在linux和windows上都相同,但用户配置文件路径变量不同。
| - 项目1 | | - 项目2 | | - 项目3 | | - 项目4
我可以在.sln和.csproj文件中指定相对路径吗?如果是这样的话?
答案 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>