对csproj的更改未生效

时间:2014-09-10 00:54:30

标签: .net visual-studio-2012 msbuild csproj msbuild-propertygroup

为了根据我的配置更新我的引用,我通过添加属性并更改所有引用来调整我的.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,显示它在我开始编辑文件之前显示的路径。

  • 我尝试过卸载并重新加载项目
  • 我尝试将配置从Debug更改为Release
  • 我已经打开并关闭了解决方案
  • 解决方案关闭后,我删除了.suo文件。
  • 我点击了解决方案资源管理器上的重新加载。

.csproj中的所有引用都使用$(ReferencePath)设置,我的ReferencePath都没有使用原始路径。

我错过了什么?这是我使用财产的方式吗?

1 个答案:

答案 0 :(得分:3)

正如我在评论中提到的,我认为stijn提供了很多关于如何使用.csproj文件调试问题的好信息。他的一些基本的帮助我解决了我的问题。由于stijn没有在评论中公布所有信息作为我接受的答案,我总结并将其作为社区维基。

  • 帮助我走上正轨的最简单的事情是在.csproj的编辑之间退出VS.我一直在关闭解决方案并重新打开它,但不知何故有不同的结果。因此,如果您担心您的更改没有传播,请务必退出VS.

  • 我已经看到.suo文件导致一些奇怪的缓存问题,我的文件不再引用的路径仍然出现。为了使事情尽可能干净,退出VS后,删除.suo。它只是一个偏好缓存;删除它不会让你失去任何东西。

  • 如果要调试变量,可以将以下代码放在.csproj中:

    <Target Name="ShowRefPath" BeforeTargets="Build"> <Message Text="$(MyRefPath)"/> </Target>

其中MyRefPath是您感兴趣的变量。如果您将输出日志过滤器设置为“正常”或更高,则它将在您构建时出现在输出日志中。

  • 我发现将输出日志过滤器(在工具 - &gt;选项 - &gt;项目和解决方案 - &gt; MSBuild项目输出详细程度)设置为Detailed给了我足够的数据来调试我的基础问题。它非常冗长,但那就是你在那时寻找的东西。

其中,对我来说最有用的提示是设置输出日志详细程度并退出VS而不是关闭解决方案。