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

2024-03-02

我的公司对自定义 MSBuild 目标文件库进行了大量投资,我们用它来构建完整的产品。我们在源代码管理中拥有的每个项目文件都会导入至少一个自定义目标文件,这些文件最终都会导入一个包含大量通用目标和属性的核心目标文件。

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

我遇到的问题是,我对 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 属性或任何内容的基本使用。

这就是我的 MSBuild 知识的范围,所以我不知道从哪里获取它。

总体而言,MSBuild 对 rptproj 文件的支持似乎有些不成熟,但我是否遗漏了一些东西?


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

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

作为测试,我覆盖默认值OutputPath对于 SSRS rptproj :

<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 file:

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

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

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

结果:

和构建文件build.obj生成于bin\Debug\Report Project1 folder.

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 为什么我可以从“eval”调用“print”

    对于代码 usr bin python src print import os obj compile src exec eval obj builtins False 我得到输出 Traceback most recent call la
  • 后藤此时却出乎意料——批处理

    我正在尝试制作一个基于批处理文本的游戏 但刚开始写就遇到了以前从未遇到过的问题 menu the game menu opens when the game starts cls echo This game is still being
  • ActiveSupport 中 mattr_accessor 和 cattr_accessor 之间的区别?

    我无法通过查看源代码来弄清楚两者之间的区别cattr and mattr 分别在类和模块中提供的方法 我读过这个问题 Rails 模块中的 mattr accessor 是什么 https stackoverflow com questio
  • 动态选择 WTForms Flask SelectField

    我正在尝试使用 FlaskForms 将 userID 变量传递给 WTForms 首先 我将展示工作正常的代码 然后展示我需要修改的内容 我不知道如何修改的部分 我正在添加与某个组关联的新名称 FlaskForm模型 class AddN
  • 用于解析单个键的正则表达式:Javascript 中的 JSON 值

    我想看看是否可以查找个人keys出于一个JSONJavascript 中的字符串并返回它Value with Regex 有点像建造一个JSON搜索工具 想象一下以下 JSON Name Humpty Age 18 Siblings Dra
  • 如何从c中的字符串数组中访问单个字符?

    只是想了解如何寻址字符串数组中的单个字符 另外 这当然会让我总体上理解指向指针下标的指针 如果我有char a我想到达第二个字符串的第三个字符 这有效吗 a 1 2 看来应该 几乎 但不完全是 正确答案是 a 1 2 因为您需要首先取消对实
  • Netbeans 7 调色板为空?如何恢复呢?

    我在 Kubuntu 12 04 上使用 Netbeans 7 我这样启动 Netbeans netbeans cp a usr share java xercesImpl jar Netbeans 和 Kubuntu 12 04 已知问题
  • 有没有办法使用正则表达式来匹配引号之外的文本模式?

    正如标题中所述 有没有一种方法可以使用正则表达式来匹配出现在引号之外的文本的文本模式 理想情况下 考虑到以下示例 我希望能够匹配引号之外的逗号 而不是引号内的逗号 这是一些文本 后面是 文本 用引号引起来 or 这是一些文本 后面是 文本
  • 内核级别的 Docker 命名空间

    如何区分 docker 容器的 pid 1 17 等与主机的 1 17 等 pid 以及当我们在 docker 容器内创建新进程时发生的所有内核更改是什么 如何在宿主机中看到docker内部的进程 如何区分docker容器的pid 1 17
  • 使用 quosure 作为 by 参数连接数据集

    我正在尝试编写一个自定义函数 该函数将使用 quosures 作为 left join 函数的 by c 部分中的参数来连接两个数据集 这是我当前对该函数的尝试 在 by c left index right index 部分失败 left
  • 如何使用 javascript 替换字符串中所有出现的变量?

    我正在尝试使用 javascript 替换字符串中所有出现的变量 这不起作用 var id 1 var re new RegExp id g var newHtml oldHtml replace re 2 这仅替换第一次出现的 id va
  • 按随机顺序对数组列表进行排序

    我正在编写一个纸牌游戏 我有一个ArrayList持卡 Object 在哪里 他们每个人都有自己的 id 由于我想让这个游戏支持多人模式 我必须以某种方式在两个玩家之间发送 接收游戏进度 现在 如果我在一侧洗牌 我必须在另一侧做同样的事情
  • 使用 Nginx 设置 Laravel

    我正在尝试设置Laravel http laravel com 可使用的 PHP 框架Nginx http wiki nginx org Main 这是我的目录结构 project application laravel public in
  • 获取 Azure AD B2C 策略的 SAML 元数据时出错 - AADB2C90022

    在 Azure AD B2C 中设置自定义策略以连接到 ADFS 身份提供程序 这需要一个 SAML 元数据端点 如下面链接的文档中所指定 https learn microsoft com en us azure active direc
  • 为什么 XHTML 中的


    不同?

    这是 HTML 页面的完整源代码 one br two br three br four 谁能解释为什么当我在 IE8 或 chrome 中查看页面时 三 和 四 之间会出现额外的空行 我认为标准应该让所有浏览器看起来都一样 据我所知 这个
  • 自动将 CSV 文件导入 SQL Server [重复]

    这个问题在这里已经有答案了 我正在尝试将许多不同的 csv 文件导入 SQL Server 2008R2 数据库 文件中的数据以逗号分隔 我对文件格式没有发言权 有些列是文本 并用双引号分隔 就像在 Excel 中一样 这些列包含的文本可能
  • 在View的背景中画一个半圆

    我正在尝试创建一个背景为半圆的 TextView 我使用 ShapeDrawable 创建一个椭圆形 我尝试使用 ScaleDrawable 将椭圆形的垂直尺寸加倍并剪辑它来创建半圆 但是 ScaleDrawable 没有任何效果 为什么不
  • 我可以使用新的 ZeroClipboard 从剪贴板获取数据吗?

    我在项目中使用这个新版本的 ZeroClipboard https github com jonrohan ZeroClipboard https github com jonrohan ZeroClipboard 创建按钮来从 HTML
  • python中的加权非负最小二乘线性回归[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道有一个加权 OLS 求解器 http statsmodels sourceforge net d
  • 是否可以自定义 Visual Studio 2017 SSRS rptproj MSBuild 文件?

    我的公司对自定义 MSBuild 目标文件库进行了大量投资 我们用它来构建完整的产品 我们在源代码管理中拥有的每个项目文件都会导入至少一个自定义目标文件 这些文件最终都会导入一个包含大量通用目标和属性的核心目标文件 最近 我们在我们的解决方