在我的一台机器上,我从任何GetLocalWorkspaceInfo调用中得到null的返回值.对于这个简单的程序,我已经孤立到问题甚至失败了:
namespace WorkstationTest
{
using Microsoft.TeamFoundation.VersionControl.Client;
class Program
{
static void Main()
{
string workspaceLocalPath = @"C:\Dev";
var info = Workstation.Current
.GetLocalWorkspaceInfo(workspaceLocalPath);
// info is always null here
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经检查过:
完全相同的代码就像我应该的那样在我的另一台机器上工作.
我已经确认我有一个工作区 C:\Dev

我创建了一个新工作区并在不同的目录中更改workspaceLocalPath了代码中的变量以匹配.
我查阅了文档,其中声明返回值为null if the path is not in a workspace.从上图中,路径应位于工作区中.
然而,一切似乎都表明这应该有效.有什么我可以失踪的吗?
I am using MEF1 and running in to an odd scenerio.
This constructor is never called:
[ImportingConstructor]
public LogViewModuleRoot(INavigationCommandManager navigationCommandManager,
ISettingsManager settingsManager,
IBusyService busyService)
{
NavigationCommandManager = navigationCommandManager;
SettingsManager = settingsManager;
BusyService = busyService;
}
Run Code Online (Sandbox Code Playgroud)
While the constructor is called with the correct value when changed to this:
[ImportingConstructor]
public LogViewModuleRoot(INavigationCommandManager navigationCommandManager,
ISettingsManager settingsManager,
[Import(AllowDefault = true)] IBusyService busyService)
{
NavigationCommandManager = navigationCommandManager;
SettingsManager = settingsManager;
BusyService = busyService; // Properly hydrated - i.e. not null
}
Run Code Online (Sandbox Code Playgroud)
Typically, an ImportingConstructor …
嗨,我有以下代码:
if (!_jobs.Any(j => j.Id == emailJob.Id))
{
}
Run Code Online (Sandbox Code Playgroud)
此代码应找到满足条件的任何元素.所以我认为它应该在找到第一个元素后返回,如下所示:
if (!_jobs.FirstOrDefault(j => j.Id == emailJob.Id) != null)
{
}
Run Code Online (Sandbox Code Playgroud)
Resharper尝试将此LINQ表达式简化为:
if (_jobs.All(j => j.Id != emailJob.Id))
{
}
Run Code Online (Sandbox Code Playgroud)
这似乎对我来说效率较低,因为它必须检查每个元素是否满足逆条件.
对不起,如果我只是误解LINQ如何工作.
乔