我正在尝试为TFS2010配置Reporting Services.单击"报告"中的编辑后,在Team Foundation Server管理控制台中,我可以无错误地配置所有内容.
仓库:
服务器: INDEPENDIENTE01
数据库: Tfs_Warehouse
(单击测试连接会显示绿色标记)
分析服务
服务器: INDEPENDIENTE01
数据库: Tfs_Analysis
(单击测试连接会显示绿色标记)
报告
服务器: INDEPENDIENTE01
(单击"填充URL"显示正确的URL)
默认路径:/TfsReports
但是,当我点击确定时,我收到此消息:
The server that you specified was not found or cannot be reached. Specify another server
我有两台服务器,一台使用TFS和WSS,另一台使用SQL Server 2008.我已将报表服务器数据库配置更改为纯模式.尝试使用网络服务帐户和其他帐户.我可以访问两个网址(INDEPENDIENTE01/Reports和INDEPENDIENTE01/ReportServer)显然我也打开了所有需要的端口(否则我认为它甚至不会填充网址)
我的问题与此类似:http: //social.msdn.microsoft.com/Forums/en/tfsreporting/thread/cfcb3031-c19a-474d-aab4-3b88ecd248e1
除了它没有解决我的问题.
(我讨厌那些非特定的错误消息,微软有什么问题...)
我并不是说这个问题过于主观.
我已经谷歌了一段时间但没有得到解决这个问题的具体答案.问题是,我认为我对LINQ有点上瘾.我已经使用LINQ来查询列表,比如使用Linq到Sql,Xml等等.但后来有些事情让我感到震惊:"如果我用它来查询单个对象怎么办?" 所以我做了.试图用手榴弹发射器杀死一只苍蝇似乎有点不对劲.虽然我们都同意这看起来很艺术.
我认为它非常易读,我认为这方面没有任何性能问题,但让我举个例子.
在Web应用程序中,我需要从配置文件(web.config)中检索设置.但是如果密钥不存在,则应该有一个默认值.此外,我需要的值是十进制,而不是一个字符串,这是默认的返回ConfigurationManager.AppSettings["myKey"].此外,我的电话号码不应超过10,也不应该是负数.我知道我可以这样写:
string cfg = ConfigurationManager.AppSettings["myKey"];
decimal bla;
if (!decimal.TryParse(cfg,out bla))
{
bla = 0; // 0 is the default value
}
else
{
if (bla<0 || bla>10)
{
bla = 0;
}
}
Run Code Online (Sandbox Code Playgroud)
这不复杂,不复杂,易读.但是,这就是我喜欢它的方式:
// initialize it so the compiler doesn't complain when you select it after
decimal awesome = 0;
// use Enumerable.Repeat to grab a "singleton" IEnumerable<string>
// which is feed with the value got from app …Run Code Online (Sandbox Code Playgroud) 长话短说.分析后,此命令占用处理的0.1%
var ChangesetList = TFSConnection.GetInstance().GetVersionControl().QueryHistory
(Path, VersionSpec.Latest,0, RecursionType.Full, "", null,
VersionSpec.Latest, Int32.MaxValue,true, false);
Run Code Online (Sandbox Code Playgroud)
这一个,65.7%.(有趣的是,内部的所有处理只消耗3%)
foreach (Changeset changeset in ChangesetList)
Run Code Online (Sandbox Code Playgroud)
我得到我的清单需要几秒钟......发生了什么事?为什么在列表中迭代这么慢?
有没有更快的方法来做到这一点?
编辑:另外,为什么我不能直接将其转换为List<Changeset>?
假设我有一个
List<dynamic> myList = new List<dynamic>();
Run Code Online (Sandbox Code Playgroud)
在课堂内:
public class DynamicMixin : DynamicObject
{
internal List<dynamic> myList= new List<dynamic>();
public void AddInterface<T>(T _item) where T:class{
Interfaces.Add(_item);
}
public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result)
{
if (myList.Contains((item)=>item.GetType().Equals(indexes[0].GetType())){
/* do something */
}
return base.TryGetIndex(binder, indexes, out result);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写myDynamicObject [typeof(IDisposable)]所以我会得到属于myDynamicObject的IDiposable对象.
这行给了我一个错误:
if (myList.Contains((item)=>item.GetType().Equals(indexes[0].GetType())){
Run Code Online (Sandbox Code Playgroud)
无法将lambda表达式转换为"动态"类型,因为它不是委托类型
我可以通过迭代列表来做到这一点:但为什么我无法使用Contains?