Phi*_*ler 13 msbuild reportviewer rdlc
我正在使用VS 2010的reportviewer控件来创建客户端报告(rdlc).在我的开发机器上一切正常,当我手动编译(通过VS2010)并手动部署到没有安装开发工具的测试机器时.
为了使测试机器能够正常工作(不安装VS2010或ReportViewer.exe),我必须在我的项目中添加对Microsoft.ReportViewer.Winforms,Microsoft.ReportViewer.Common和Microsoft.ReportViewer.ProcessingModel的引用并将它们全部"复制本地".
我有为Build Action配置的rdlc文件=>嵌入式资源.这是向项目添加新rdlc时的默认设置.我愿意配置这个,否则如果这会解决这个问题(不知道它是否相关).
问题:由于添加了rdlc文件,解决方案不再构建在构建服务器上.我在构建服务器上安装了ReportViewer.exe,并验证了GAC中是否存在所需的程序集..Net 4框架未安装在构建服务器上 - 我不认为这是必需的,因为该解决方案针对3.5运行时.
我相信问题的根源是构建日志中的以下内容:
目标"RunRdlCompiler":完全构建目标"RunRdlCompiler".输出文件"obj\Release\RdlCompile.compiled"不存在.使用程序集"Microsoft.ReportViewer.Common,Version = 9.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"中的"RdlCompile"任务.任务"RdlCompile":Report\RDLC\GreenReport.rdlc(0,0):error rsInvalidReportDefinition:报告定义无效.详细信息:报表定义具有无效的目标命名空间" http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition ",无法升级.
据我所知,Microsoft.ReportViewer.Common版本10.0.0.0应该用于"编译"rdlc,但MSBuild似乎使用9.0.0.0.我相信如果我可以强制它使用正确的版本(安装在GAC中的IS),解决方案将编译.
这是因为您的Microsoft.Common.Targets文件指向程序集的9.0版本.
如果您查看[sysdir]\Microsoft.NET\Framework\v3.5,您会发现Microsoft.Common.targets,这正在推动MSBuild所做的很多工作.公共目标文件的这个版本指向[Program Files]\MSBuild\Microsoft\VisualStudio\v9.0\ReportingServices\Microsoft.ReportingServices.targets强制MSBuild与9.0版本一起运行.
安装.NET 4.0时,v4.0.x目录中有一个新的公共目标文件,这个新文件现在指向[Program Files]\MSBuild\Microsoft\VisualStudio\v10.0\ReportingServices\Microsoft.ReportingServices.targets10.0版本的ReportViewer程序集.
10.0 ReportViewer是针对.NET 3.5编译的,旨在兼容3.5和4.0.您很可能摆脱.NET 4.0框架,并将您的3.5公共目标文件更改为指向新的ReportingServices目标文件,它应该可以工作.无论如何,在理论上,我从未真正尝试过它.你可能最好只坚持使用4.0,因为这是我们为新查看器设计MSBuild支持时的预期.
小智 5
我有一个非常相似的问题。突然之间,我无法再构建包含 .rdlc 文件的 VS2010 项目。我没有转换任何报告或使用报告服务器,一切都是本地的。我尝试创建一个全新的项目并添加一个空的新 rdlc 报告并点击构建,但它不起作用。就在有一天,它停止编译并给了我以下错误:
The report definition is not valid. Details: The report definition has an invalid target namespace 'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' which cannot be upgraded.
事实证明,问题是我的“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\ReportingServices\Microsoft.ReportingServices.targets”文件发生了某种变化。我的文件顶部是:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="Microsoft.Reporting.RdlCompile" AssemblyName="Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
它应该是:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="Microsoft.Reporting.RdlCompile" AssemblyName="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
我更改了文件中的“使用任务”行,所有内容都重新构建。真的很令人沮丧,它耗尽了我两天的生命。希望发表此评论可以帮助处于类似情况的其他人。
吉姆·拉弗勒
小智 5
我尝试过全部重新安装,但没有成功。然后,我尝试按照 Jim 的帖子更新Microsoft.ReportingServices.targets ,但甚至对我不起作用。
最后,我只是从其他机器复制了Microsoft.ReportingServices.targets(它运行时没有错误)。令人惊讶的是,它正在发挥作用。
我在比较时注意到的额外区别是更改PublicKeyToken和Version。
这可能只是我的情况,但吉姆的帖子非常有用。
旧金山联邦大学
| 归档时间: |
|
| 查看次数: |
21147 次 |
| 最近记录: |