我有许多项目组成一个解决方案。每个项目都有自己的目录结构,csproj文件位于不同级别的文件夹中。
每个csproj都指定了OutputPath属性。 OutputPath是相对路径,它因项目而异,以使所有项目具有相同的输出目录。
如果我构建单独的项目,它可以正常工作。但是,如果我尝试构建解决方案文件,则一切都会改变。在这种情况下,每个项目的输出文件夹不同(取决于该项目OutputPath中'..'的数量)。
我知道,在某个时刻之前,一切都运行良好。 没有人更改build.cmd或任何sln或csproj文件。 但现在我遇到了上述情况。
所以我的问题是 - 是什么影响了相对路径的计算?我的意思是如何强制相对OutputPath从特定项目的csproj文件所在的文件夹开始计算。 而不是从.sln文件所在的文件夹开始。
每个csproj都指定了OutputPath属性。 OutputPath是相对路径,它因项目而异,以使所有项目具有相同的输出目录。
如果我构建单独的项目,它可以正常工作。但是,如果我尝试构建解决方案文件,则一切都会改变。在这种情况下,每个项目的输出文件夹不同(取决于该项目OutputPath中'..'的数量)。
我知道,在某个时刻之前,一切都运行良好。 没有人更改build.cmd或任何sln或csproj文件。 但现在我遇到了上述情况。
所以我的问题是 - 是什么影响了相对路径的计算?我的意思是如何强制相对OutputPath从特定项目的csproj文件所在的文件夹开始计算。 而不是从.sln文件所在的文件夹开始。
Let's assume I have following directory structure:
dir1
a.sln
dir2
a.csproj
dir21
dir3
b.csproj
a.csproj的输出路径设置为'../../_bin',从a.csproj文件夹计算,这个路径刚好在dir1的上层。 b.csproj的输出路径设置为'../../../_bin',与a.csproj相同 - 如果从b.csproj计算,它刚好在dir1的上层。
a.sln包含a.csproj和b.csproj。
当我运行msbuild时,我会得到一个项目构建到'dir1/../../_bin',b项目构建到'dir1/../../../_bin' - 两个项目文件的相对路径都是从解决方案文件位置计算的,而不是从项目文件计算。