我有许多项目被加入到一个解决方案中。每个项目都有自己的目录结构,并且 csproj 文件位于不同级别的文件夹结构中。每个 csproj 都指定了 OutputPath 属性。OutputPath - 是一个相对路径,它因项目而异,因此所有项目都具有相同的输出目录。如果我建立一个单独的项目就可以了。但是如果我尝试构建解决方案文件,一切都会改变。在这种情况下,每个项目的输出文件夹都不同(取决于该项目的 OutputPath 中的“..\”数量)。
我知道,在某个时刻之前一切正常。没有人改变 build.cmd 也没有任何 sln 或 csproj 文件。但现在我有上述情况。
所以我的问题是 - 是什么影响了相对路径的评估方式?我的意思是如何强制从该特定项目的 csproj 文件所在的文件夹开始评估相对 OutputPath。不是来自 .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”,其中是相同的 - 如果从 b.csproj 计算,大约是 dir1
a.sln 包含 - a.csproj 和 b.csproj。
当我运行 msbuild 时,我得到一个项目构建到 'dir1/../../_bin' 和 b 项目到 'dir1/../../../_bin' - 项目文件的两个相对路径都从解决方案中计算文件位置,而不是项目文件。