2

为了尝试根据我的配置更新我的引用,我通过添加一个属性并更改所有引用以使用它来调整我的 .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 文件所做的任何操作都不会更改引用的路径 - 无论我做什么,右键单击引用并在属性中查看它的路径会显示它在我开始编辑文件之前显示的相同路径。

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

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

我错过了什么?我使用该物业的方式有问题吗?

4

1 回答 1

3

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

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

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

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

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

MyRefPath您有兴趣查看的变量在哪里。如果您将输出日志过滤器设置为正常或更高,它将在您构建时出现在您的输出日志中。

  • 我发现将输出日志过滤器(在工具->选项->项目和解决方案->MSBuild 项目输出详细程度)设置为详细信息给了我足够多的数据来调试我的潜在问题。它非常冗长,但这就是您当时正在寻找的内容。

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

于 2014-09-11T17:35:03.830 回答