沙堡错误 BE0073 .NET Framework 4.5

Sandcastle Error BE0073 .NET Framework 4.5

我正在尝试使用 Sandcastle 生成帮助文件,在本地可以找到,但在我的构建服务器上我不断收到相同的错误消息:

SHFB: Error BE0073: A project with a different or higher framework version was 
found but that version (.NETFramework 4.5) or a suitable redirected version 
was not found 

我已经检查并安装了 .NET 4.5.1 和 4.5,我的项目在服务器上构建没有问题。只有 Sandcastle 导致了问题。

有谁知道这个错误的原因或者我该如何进一步诊断?

出于某种原因目录:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5

在我的构建服务器上丢失了。我从我的本地机器上复制了它,一切都开始工作了。

对我来说,这条消息是在我在我们的构建服务器上安装 Sandcastle Help File Builder 应用程序之后出现的,但是构建日志抱怨找不到 SHFBROOT 环境变量,但我已经在帮助中配置了一个覆盖构建日志表示它将使用的 File Builder 项目。

   <PropertyGroup>
    <!-- NOTE: Update the version number in the path (YYYY.M.D.R) to match the package version -->
    <SHFBROOT Condition=" '$(SHFBROOT)' == '' ">$(MSBuildThisFileDirectory)\..\packages\EWSoftware.SHFB.2017.1.28.0\tools\</SHFBROOT>
   </PropertyGroup>

上面的设置在构建服务器上没有帮助我,它仍然失败(但不是在本地)。

对我的案例有用的是重新启动我们的构建服务器。

我的一个相当明显的疏忽,因为我预计这是我最初可能错过的帮助文档中的某个地方。

我在构建服务器上遇到了与 运行 相关的问题: BE0071: Unable to locate information for the project framework version 'XXXX'

原因

构建引擎无法找到项目 FrameworkVersion 属性 中指定版本的框架信息。已尝试将使用重定向到更高版本,但发现 none。

解决方案

如果您 select 系统上没有安装框架,就会发生这种情况。例如,选择早期版本的 Silverlight 框架。如果未找到较早版本,构建引擎将尝试将使用重定向到框架的较新版本(如果可以在系统上找到的话)。如果找不到指定版本或更高版本,则需要在系统上安装项目中指定的selected或更高版本的框架。

在参考程序集文件夹 (%ProgramFiles(x86)%\Reference Assemblies\Microsoft\Framework) 中搜索框架程序集。如果您尚未安装与指定框架版本或相关目标包相关的 Visual Studio 版本,则参考程序集可能不存在。最简单的解决方案是下载并安装适当的 targeting pack 或从另一个有参考程序集的系统复制参考程序集。

如果使用 Sandcastle 帮助文件生成器 NuGet 包,这可能意味着您需要安装一个或多个包含必要文件的帮助文件生成器反射数据集包.如果存在多个版本的平台包,请安装最新版本,因为它也将涵盖所有以前的版本。一定要将项目的Component Path项目属性设置到packages文件夹下如果不在帮助文件构建项目文件夹下。安装并设置组件路径后,您可能需要关闭并重新打开项目,以便它检测新安装的文件。

我在尝试配置 VSTS 时遇到了同样的问题。

SHFB: Error BE0071: Unable to locate information for the project framework version '.NET Framework 4.6.1' or a suitable redirected version on this system. See error number help topic for details.

LastBuild.log 表明它没有找到 .NETFramework 文件夹。

Finding tools...
The Sandcastle tools are located in &#39;d:\a\s\packages\EWSoftware.SHFB.2017.1.28.0\Tools\&#39;
The SHFBROOT system environment variable was not found.  This variable is usually created during installation and may require a reboot.  It has been defined temporarily for this process as: SHFBROOT=d:\a\s\packages\EWSoftware.SHFB.2017.1.28.0\Tools\
Locating components in the following folder(s):
    d:\a\s\Documentation\Project.Docs
    C:\ProgramData\EWSoftware\Sandcastle Help File Builder\Components and Plug-Ins\
    d:\a\s\packages\EWSoftware.SHFB.2017.1.28.0\Tools\
    Last step completed in 00:00:00.0360

我最终将项目属性中的 Project-specific components path 设置为指向 SHFB .NET Framework 包,这解决了问题。