Visual Studio 2017 SSRS rptproj MSBuild文件是否可以自定义?

3

我的公司为了构建我们的完整产品,投入了大量资金建立了一个自定义 MSBuild 目标文件库。我们源代码控制中的每个项目文件都会导入至少一个自定义目标文件,最终都会导入包含我们通用目标和属性大部分内容的核心目标文件。

最近,我们向解决方案中添加了一个新的 SSRS 项目,该项目(我相信)是在 2017 年底引入的新 rptproj 格式,特别声明了 ToolsVersion="15.0",并从 VS 2017 安装目录中导入了 Microsoft.ReportingServices.MSBuilder.targets

我遇到的问题是,对 rptproj 文件进行的任何逻辑更改似乎都没有任何作用;导入我们共享的目标文件不会执行任何我们的目标,例如声明 BeforeTargets="BeforeBuild" 的目标,甚至设置针对 ReportingServices 特定目标的目标 BeforeTargets="ReportBuilderTarget"

此外,尝试设置 OutputPath 会导致异常行为。声明以下 OutputPath:

<OutputPath>$(SharedOutputPath)SSRS\$(MSBuildProjectName)</OutputPath>

在构建完成后,将在项目文件目录下的以下文件夹中生成结果:

C:\workspace\solutionfolder\ReportProject1\$(SharedOutputPath)SSRS\$(MSBuildProjectFile)

这很奇怪,因为它甚至没有将众所周知的元数据标记 $(MSBuildProjectName) 解释为属性,并将其以及 $(SharedOutputPath) 一起作为字符串文字输出到 OutputPath 属性中。
此外,在 VS 中保存 rptproj 文件会导致文件中所有自定义内容被完全清除。
检查 Microsoft.ReportingServices.MSBuilder.targets 文件后,似乎它对基本的 Microsoft.Common.targets 文件进行了大量修改,但我无法想象任何方式会阻止使用 MSBuild 属性或其他内容。
总体而言,看起来 rptproj 文件的 MSBuild 支持有些不完善,但我是否漏掉了什么?

请您能否分享一个测试样本的自定义SSRS rptproj以及一些构建步骤给我们,这样我们就可以复现这个问题了吗? - Joy
1个回答

1

能否自定义Visual Studio 2017 SSRS rptproj MSBuild文件?

作为解决方法,您可以使用MSBuild命令行构建项目。

为了测试,我将SSRS rptproj的默认OutputPath覆盖为:

<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <FullPath>Debug</FullPath>
    <OutputPath>bin\Debug\$(MSBuildProjectName)</OutputPath>
    ...
  </PropertyGroup>

并在.rptproj文件中添加自定义目标:

  <Target Name="Test" BeforeTargets="BeforeBuild">
    <Message Text="$(OutputPath)"></Message>
  </Target>

然后我使用MSBuild命令行构建项目:

msbuild "<ProjectPath>.rptproj" /property:Configuration=Debug

作为结果:

enter image description here

并且生成的构建文件 build.obj 存储在 bin\Debug\Report Project1 文件夹中。

希望这可以帮到您。


非常有趣。如你所建议,我尝试在命令行构建.rptproj和.sln文件,两者都在Test目标中正确引用MSBuild和导入属性。可能与此相关的是,构建几个报表时出现错误信息“error MSB4018:ReportBuilderTask任务意外失败”,而使用VS构建.sln时没有这种情况。在使用独立的MSBuild构建时似乎没有任何问题,但在Visual Studio中却出现了某些问题。如果我缺少一些安装组件,我是无法加载或构建该项目的,对吧? - bwerks
1
@bwerks,是的,要构建这个.rptproj文件,您需要下载并安装Visual Studio的SQL Server数据工具(SSDT):https://learn.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt?view=sql-server-2017 - Leo Liu
就这个来说,我目前配置了以下模块,从VS的帮助|关于中复制而来:SQL Server数据工具,15.1.61804.210(Microsoft SQL Server数据工具);SQL Server报告服务,14.0.1016.268(Microsoft SQL Server报告服务设计师版本14.0.1016.268) - bwerks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接