【问题标题】:Task could not find "LC.exe" using SdkToolsPath任务无法使用 SdkToolsPath 找到“LC.exe”
【发布时间】:2025-12-12 16:10:01
【问题描述】:

我使用 TFS 将项目克隆到我的计算机,当我构建项目时出现此错误:

错误 6 任务无法使用 SdkToolsPath "" 或 注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools-x86"。确保 SdkToolsPath 已设置且该工具存在于正确的处理器中 SdkToolsPath 下的特定位置,Microsoft 已安装 Windows SDK

我在网上搜索过,但找不到解决方案。我使用 VS 2013 和 .NET 4。 我怎样才能解决这个问题?谢谢。

【问题讨论】:

  • 从读取错误信息来看,没有名为SdkToolsPath的环境变量,或者确实存在且值为空。所以设置那个值,或者修复注册表值。
  • "确保已设置 SdkToolsPath,并且该工具存在于 SdkToolsPath 下的正确处理器特定位置,并且已安装 Microsoft Windows SDK".

标签: c# tfs visual-studio-2013


【解决方案1】:

原来你可以直接在.csproj文件中指定SDK的路径:

<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools</TargetFrameworkSDKToolsDirectory>

并且构建以这种方式找到了 lc.exe。 因此,为 lc.exe 执行 dir /s 并使用该路径。

我之前希望使用&lt;SdkToolsPath&gt; 来设置它,但那没有用。在 Microsoft.Common.targets 中,SdkToolsPath 是从 TargetFrameworkSDKToolsDirectory 设置的,所以我尝试了它并且它有效。 (如果变量名对应 1 到 1 就好了,但它们不对应。)

这是在 Visual Studio 2015 上,从 ant 调用 msbuild。

【讨论】:

  • 你把那一行放在 .targets 的什么地方?
  • 看起来 .targets 文件也被锁定,即使是管理员也无法写入 hmmm
  • 这应该添加到 csproj 的什么地方?在哪个标题下?
  • C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools
  • 即将它放在主 标签下的 标签下
【解决方案2】:

如果您使用 MSBuild.exe 从命令行构建项目,则可以将 TargetFrameworkSDKToolsDirectory 作为参数传递,以避免编辑 .csproj 文件。 例如: MSBuild.exe mysolution.sln /t:build /p:TargetFrameworkSDKToolsDirectory="C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools"

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,并通过重新安装 Visual Studio 解决了它。

    【讨论】:

      【解决方案4】:

      http://msdn.microsoft.com/en-us/library/ha0k3c9f(v=vs.110).aspx

      许可证编译器读取包含许可的文本文件 信息并生成一个二进制文件,该文件可以嵌入到 公共语言运行时可执行文件作为资源。 .licx 文本文件是 由 Windows 窗体设计器自动生成或更新 每当将许可控件添加到表单时。作为...的一部分 编译,项目系统将转换.licx文本文件 到为 .NET 提供支持的 .licenses 二进制资源中 控制许可。然后二进制资源将嵌入到 项目输出。 不支持 32 位和 64 位的交叉编译 在构建您的软件时使用许可证编译器时支持 这是因为许可证编译器必须加载程序集, 并且从 32 位应用程序加载 64 位程序集不是 允许,反之亦然。在这种情况下,请使用许可编译器 命令行手动编译许可证,并指定 相应的架构。 此工具会自动安装 视觉工作室。要运行该工具,请使用开发人员命令提示符(或 Windows 7 中的 Visual Studio 命令提示符)。了解更多信息, 请参阅 Visual Studio 命令提示符。

      【讨论】:

      • 我不明白这句话是如何回答这个问题的。可以添加摘要或解释吗?
      • 那里有一个信息世界。你在构建 x86 v x64。您项目中的哪些控制需要许可。如果您知道 LC.exe 做了什么,以及它与您克隆的项目的关系,很难从您的问题中判断出来。添加更多细节,我也许可以扩展
      • 我觉得这句话一点用都没有。对我来说,这个问题甚至与 LC.exe 无关,但没有设置 SdkToolsPath。此外,我们中的一些人正在尝试在没有安装 Visual Studio 的情况下编译项目。
      • 虽然 OP 已经接受了这个答案,但它并没有真正回答这个问题,也没有提供关于如何解决问题的足够详细信息。这只是复制和粘贴。