我有一个包含多个报告项目的解决方案(每个目标部署文件夹一个 - 我认为这是实现此效果的唯一方法,至少在我放弃Visual Studio进行报告部署之前)。
我想为所有这些报告指定“一次且仅一次”的数据源信息。
到目前为止,我已经创建了一个包含我的共享数据源的单独报告项目。如果我按照正确的顺序将事物部署到报告服务器并为适当的神提供足够的祈祷,那么报告似乎会链接到那里的共享数据源并运行(至少通过IE中的报告管理器)。
但是,当我开发报告时,我无法再“预览”以在本地尝试 - 我现在必须将其部署到报表服务器以尝试运行它。这很麻烦。
我唯一的办法是添加一大堆数据源副本(指向我的开发数据库),每个项目一个,设置那些不要从我的机器上部署,并(可能)将它们从源代码控制中排除?
答案 0 :(得分:9)
我正在玩的一种技术(脏技巧?)是将我的数据源(.rds
)复制到每个项目中,关闭Visual Studio,然后复制到基础文件/文件夹中:
.rds
(只留下我Data Sources
项目中的一个副本)Foo.rptproj
)中,将Project.DataSources.ProjectItem.FullPath
元素的文本从My Shared Data Source.rds
更改为..\Data Sources\My Shared Data Source.rds
这样所有报告项目都引用文件系统上的相同底层文件,因此它们共享一个数据源定义,但每个项目也有一个“本地”共享数据源,因此Visual Studio保持高兴。
关于源代码管理:签入的.rds
仍然只有一个副本,因此我们不会使用大量重复的代码来污染代码库;可以检查对.rptproj
文件的更改,因此我们不会强迫开发人员进行非自然的源代码控制体操(选择性部分提交等)以保持理智的主副本。
每个报告项目都会尝试部署这个数据源,虽然我已经禁止覆盖服务器上的现有数据源,所以这并不算太大。 。 。我想如果我打算覆盖服务器的数据源定义,那么使用相同的.rds
覆盖它一次还是十次都无关紧要。
免责声明:这仍是一项实验。我在实践中没有使用这种技术的经验,所以我不能实际推荐它。
答案 1 :(得分:0)
木本植物,
我们倾向于做的是:
在服务器上有一个名为“DataSources”的文件夹,对用户隐藏。将有所有数据源。
对于VS中的每个报告项目,都会有一个文件夹,也称为“DataSources”,但这次它只包含此报告的数据源。
只要文件夹结构相同(即报表和数据源在服务器和VS中具有相同的相应文件夹级别),这似乎对我们有用。