为了根据我的配置更新我的引用,我通过添加属性并更改所有引用来调整我的.csproj文件,如下所示:
<PropertyGroup>
<ReferencePath Condition=" '$(Configuration)' == 'Release'">foo\release\1.0.0.9\bin\</ReferencePath>
<ReferencePath Condition=" '$(Configuration)' == 'Debug'">bar\debug\</ReferencePath>
</PropertyGroup>
<Reference Include="BasicControls, Version=5.0.53.0, Culture=neutral, PublicKeyToken=25ad4b03c913ffff, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(ReferencePath)\BasicControls.dll</HintPath>
</Reference>
出现问题并阻止变更传播。我对.csproj文件所做的任何操作都不会改变引用的路径 - 无论我做什么,右键单击引用并查看属性中的Path,显示它在我开始编辑文件之前显示的路径。
.csproj中的所有引用都使用$(ReferencePath)
设置,我的ReferencePath都没有使用原始路径。
我错过了什么?这是我使用财产的方式吗?
答案 0 :(得分:3)
正如我在评论中提到的,我认为stijn提供了很多关于如何使用.csproj文件调试问题的好信息。他的一些基本的帮助我解决了我的问题。由于stijn没有在评论中公布所有信息作为我接受的答案,我总结并将其作为社区维基。
帮助我走上正轨的最简单的事情是在.csproj的编辑之间退出VS.我一直在关闭解决方案并重新打开它,但不知何故有不同的结果。因此,如果您担心您的更改没有传播,请务必退出VS.
我已经看到.suo文件导致一些奇怪的缓存问题,我的文件不再引用的路径仍然出现。为了使事情尽可能干净,退出VS后,删除.suo。它只是一个偏好缓存;删除它不会让你失去任何东西。
如果要调试变量,可以将以下代码放在.csproj中:
<Target Name="ShowRefPath" BeforeTargets="Build">
<Message Text="$(MyRefPath)"/>
</Target>
其中MyRefPath
是您感兴趣的变量。如果您将输出日志过滤器设置为“正常”或更高,则它将在您构建时出现在输出日志中。
其中,对我来说最有用的提示是设置输出日志详细程度并退出VS而不是关闭解决方案。