【问题标题】:Is there a way to automatically fix versioned references in .csproj files?有没有办法自动修复 .csproj 文件中的版本化引用?
【发布时间】:2012-09-03 05:38:03
【问题描述】:

请问有人知道是否有办法自动修复包含版本化引用的 Visual Studio 2010 .csproj 文件(例如,通过删除版本)?上下文是我正在尝试构建一些第三方代码的 1000 个历史提交,并且对于某些提交,.csproj 文件包含不应该引用的版本,例如:

[ERROR] Found versioned reference on line: <Reference Include="<...>, Version=1.2.34567.89012, Culture=neutral, PublicKeyToken=<...>, processorArchitecture=MSIL" /> in <...>. Versioned references are not allowed.

我可以想象编写一个脚本来执行此操作,但这似乎有点痛苦(特别是因为该脚本仅对这一特定任务有用,并且之后无用) - 我理想地寻找例如我可以在 .csproj 文件上运行 msbuild 命令来修复它们。有没有这样的机会存在(不太有希望)? :) 显然,为 1000 次提交手动修复 .csproj 文件不是一种选择,所以看起来就是这样或编写脚本。

【问题讨论】:

  • 编写一个列出所有 .csproj 文件并使用来自 github.com/loresoft/msbuildtasks 的 FileUpdate 任务对版本号进行查找/替换的 msbuild 脚本并不难
  • 您能否为这项任务提供更多信息\样本。您是否锁定了 msbuild 脚本。你需要为你应该执行的 1000 个构建中的每一个运行它吗?
  • 上下文是我需要将修复作为一系列命令的一部分运行,以检查和构建 1000 个提交中的每一个。我希望避免坐下来编写代码来做这件事,因为这是一个一次性的任务,但我想这就是它的发展方向。我并不特别依赖于 MSBuild - Ilya 的 C# 建议可能是我可能会采用的方式,除非我可以对 sed 或其他东西做一些有用的事情 - 我之所以说 MSBuild,是因为我认为 Microsoft 可能已经提供了一种方法“修复”损坏的项目文件。显然不是!

标签: visual-studio-2010 msbuild csproj


【解决方案1】:

与通过System.Xml.Linq 或一些Microsoft.Build.Evaluation 类似Resolving incorrect project reference GUIDs 搜索现有任务相比,将一次性控制台应用程序放在一起会更快

【讨论】:

    【解决方案2】:

    如果您倾向于使用 msbuild 执行此操作并安装了 .net 4.0 - 您可以使用 C# 快速编写自己的内联任务。 我发布了sample of msbuild inline taskusage of it

    如果您不限于 msbuild - 我认为 powershell 脚本可以在几行中完成相同的工作。

    【讨论】:

      猜你喜欢
      • 2022-08-04
      • 1970-01-01
      • 2021-01-02
      • 2020-09-30
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      • 2022-09-27
      相关资源
      最近更新 更多