【发布时间】:2015-01-20 07:31:09
【问题描述】:
我正在尝试从另一个解决方案中引用一个 C# DLL 项目,但是构建正在一个非常奇怪的输出文件夹中生成 DLL。
目录内容是这样的:
c:\a\b\c\src\Solution.sln
c:\a\x\y\z\MyDLL\MyDLL.csproj
MyDLL.csproj 没有<OutputPath> 标记。但是它确实有一个我不经常看到的
属性视图中显示的计算输出路径恰好是:
..\..\..\..\b\c\src-z\MyDLL\objd\i386
这对应于这个路径:
c:\a\b\c\src-z\src\MyDLL\objd\i386
这很奇怪,因为我不知道 src-z 有什么配置。 Visual Studio 是否计算带有连字符的路径?
我想解决这个问题,可能会更改
计算似乎发生在构建过程的早期,因为构建器记录的第一件事是:
1>Project 'MyDLL (x\y\z\MyDLL\MyDLL.csproj)' is not up to date.
Input file 'x\y\z\MyDLL\MyDLL.csproj' is modified after output
file 'c:\a\b\c\src-z\src\MyDLL\objd\i386\MyDLL.pdb'.
那么当项目
【问题讨论】:
-
这可能是Nuget引起的问题
-
“属性视图中显示的计算输出路径恰好是” - 您是否尝试过简单地将输出路径设置为您想要的?
-
可能不相关,但我为自己制定的一条规则是,在同一解决方案中从另一个项目引用 .dll 时,永远不要使用“解决方案引用”。我总是使用对 .dll 文件的直接引用,并在 Visual Studio 中使用解决方案的项目依赖项来强制执行正确的构建顺序。这样做的原因是,当 MSBuild 在 Visual Studio 之外(例如在持续集成或增量构建系统中)直接使用 .csproj 文件时,MSBuild 遵循进程间引用并可能执行您不执行的构建期待。
-
使用诊断冗长可能会显示值的来源(我认为是工具->选项->构建和运行)
-
@stijn 做到了。这就是我获得上述构建器日志的方式。
标签: c# visual-studio visual-studio-2012 msbuild csproj