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

c#.NetStandard项目的*.sln*.csproj文件中的相对路径,c#,.net-standard,C#,.net Standard,基本上就是标题所说的。我有一个.NetStandard库,我正在windows和linux上使用它。我的问题是引用路径是完全指定的 假设在本例中,我有4个项目,每个项目都有自己的文件夹和git存储库。项目1参考项目2、3和4;项目2和3参考项目4。linux和windows上的项目文件夹结构相同,但用户配置文件路径变量不同 |-项目1 | |-项目2 | |-项目3 | |-项目4 我可以在.sln和.csproj文件中指定相对路径吗?如果是,如何设置?您可以将与.sln或.*项目相关的路径放置

基本上就是标题所说的。我有一个.NetStandard库,我正在windows和linux上使用它。我的问题是引用路径是完全指定的

假设在本例中,我有4个项目,每个项目都有自己的文件夹和git存储库。项目1参考项目2、3和4;项目2和3参考项目4。linux和windows上的项目文件夹结构相同,但用户配置文件路径变量不同

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


我可以在.sln和.csproj文件中指定相对路径吗?如果是,如何设置?

您可以将与.sln或.*项目相关的路径放置在各自的文件中。我刚刚打开了.sln和.*proj。我们公司正在使用一个类似这样的。在将项目添加到解决方案时,VisualStudio会自动为我们生成这些内容

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

{df73ab2c-7331-49fd-8b4a-f71dac66198a}
基本法

*.csproj
中可以定义属性

使用值
$(ProjectDir)\..\\u MyFolder\
定义属性
MyStuffDir


$(项目目录)\..\\我的文件夹\
$(ProjectDir)
是放置当前
csproj文件的文件夹。更多“宏”可用,请参见构建事件“PreBuildSteps”和“PostBuildSteps”示例
$(SolutionDir)
是放置
sln文件的位置

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

在csproj文件的项目组中使用
$(MyStuffDir)
,这样您就相对于项目级别


属性\AssemblyVersion.cs

这个问题令人困惑。我不确定你有什么问题。但问题是。我在
*.sln
*.csproj
文件中只有相对路径(主要指向当前目录)。@Christopher不确定该注释的标题,但它与OP的要求完全无关。你知道什么是.NET标准吗?如果是这样的话,你为什么要提到单体和沙马林?这些是不同的beasts@Christopher标题是.NET标准。这里没有一个提到.NET框架。请阅读question@Christopher我没有使用Core、Mono或Framework,但我认为这不是重点,因为这个问题与c#编译器如何使用*.sln和*.csproj文件有关,而与我的目标框架无关。您能否从.proj和.sln文件中添加一些行来澄清问题的原因。我继续发布了一个答案,其中有我的.csproj和.sln中的行,但您的问题似乎还有其他问题,因为相对路径是由我们的csproj和sln中的visual studio生成的。请小心使用
在csproj文件中,您不确定从何处开始。例如,该行为与Visual Studio和命令行(msbuild)中的行为不同。我建议在
之前使用
$(ProjectDir)
$(SolutionDir)
以确定您来自哪里。