15

为了使用 Web API 帮助页面为我的 Web API 项目生成 XML 文档,我必须检查项目属性的“构建”部分下的“XML 文档文件”选项。当我在本地构建时,这会正确生成文档。

但是,当我签入时,我在构建服务器上收到以下错误:

CSC:生成 XML 文档文件时出错'c:\Builds\3...\Sources\CurrentVersion...\ProjectName\App_Data\XmlDocument.xml'('访问被拒绝。')

我不确定为什么会发生这种情况,因为它无论如何都会为每个构建创建一个新目录。我搜索了这个问题并搜索了 Stack Overflow,但我发现的唯一解决方案是删除 XML 文档文件(这违背了使用 Web API 帮助页面的目的)。我该如何解决这个问题?

4

3 回答 3

17

如果 XML 文件签入到 TFS,那么当 TFS 将文件获取到构建服务器上的工作区时,它将具有与文件关联的“只读属性”。现在,当构建生成新的 XML 文件时,它将无法覆盖旧的 XML 文件,因为它具有只读属性。

解决方案是:a)使用您的构建脚本修改文件属性并使其可读写 b)删除签入到 TFS 的 xml 文件,以便构建能够轻松生成 XML。

更新:如果您使用的是解决方案 b,如果该文件是您项目文件的一部分,请确保您也从 csproj 文件中删除该文件。

于 2014-06-05T16:14:53.023 回答
5

Removing the file from Source Control did not fix it for me, Team Server was still trying to access it.

I was able to solve it by Cloaking App_Data in the build definition.

于 2014-11-11T22:51:16.430 回答
1

即使您为每个构建创建一个新目录,该目录也仅用于构建输出。构建实际上并没有发生在该目录中,它发生在服务器的 tfs 工作区中,然后构建输出被复制到新目录中。访问被拒绝错误是由于签入的文件仅在构建服务器工作空间上的 tfs 访问时才被读取,因此在构建期间无法重新生成\覆盖该文件。

我通过将我的 xml 文档输出路径更改为 bin 文件夹解决了这个问题。

所以 Project-> Build -> Output 输出路径:bin\ XML 文档文件:bin/XmlDocument.xml

我建议您对所有构建配置执行此操作(项目 -> 构建,配置下拉菜单 -> 选择所有配置)

然后在 Project -> Areas/HelpPage/App_Start/HelpPageConfig.cs 下更改 config.SetDocumentationProvider 以映射到“~/bin/XmlDocument.xml”

不要忘记从源代码管理中删除 XmlDocument.xml 文件,因为它会为每个构建重新生成

于 2015-08-06T07:27:21.083 回答