我想知道如何确定此构建错误的来源;
Warning 4 The primary reference "MyNamespace.MyProject" could not be resolved because
it has an indirect dependency on the .NET Framework assembly "System.Xml, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089" which has a higher version "4.0.0.0" than
the version "2.0.0.0" in the current target framework. MyNamespace.MyOtherProject
Run Code Online (Sandbox Code Playgroud)
我理解这个错误的意思(以及其他5个同样的项目),但我无法解决如何在我的情况下解决它.在这种情况下,"主要引用"(MyNamespace.MyProject)与.NET 4.0.x没有直接的依赖关系.
主要参考仅依赖于我的另一个项目(MyNamespace.MyCoreProject),构建的源项目(MyNamespace.MyOtherProject)也直接依赖于该项目.构建并没有抱怨该项目间接引用.NET 4.0.x,所以我认为我可以排除这一点.
主要引用直接依赖于三(3)个第三方DLL,所有这些DLL也都是Target .NET 2.0.
我已经使用dotPeek来检查构建的库,并且看不到任何使用.NET 4.0的引用.
工作中唯一的另一个潜在扳手是PostSharp的使用,它直接由'MyNamespace.MyCoreProject'引用(由主参考项目引用),这可能导致问题,因为我相信有一个相关的VS2010错误引用PostSharp.dll(http://www.sharpcrafters.com/forum/Topic4444-4-1.aspx#bm4462),但我也从构建链中删除了它仍然看到此错误,所以我假设我也可以统治那个.
如果有人能告诉我为什么会这样,真棒!如果没有,关于如何弄清楚不受干扰的"间接参考"的一些方向将同样有用!
顺便说一下,我已经尝试了以下所有工具来获取一些信息,但它们并没有告诉我很多我还不知道(这是有问题的DLL的直接依赖性); - .NET Reflector - dotPeek - IldAsm - 取决于(Dependency Walker)
我刚刚使用DotPeek反编译了一些第三方来源来调试问题.输出代码包含一些不常见的操作符,AFAIK无效C#,所以我想知道它们是什么意思...
摘录看起来像(包括Dotpeek评论,因为它们可能相关);
protected internal void DoReceive(ref byte[] Buffer, int MaxSize, out int Written)
{
Written = 0;
.
.
.
// ISSUE: explicit reference operation
// ISSUE: variable of a reference type
int& local = @Written;
int num = SomeMethod();
.
.
.
// ISSUE: explicit reference operation
^local = num;
}
Run Code Online (Sandbox Code Playgroud)
那么,那里有3个不寻常的操作符...... int& = @Written似乎是在指定一个用@字符无意义命名的变量的指针?
但是什么是^local = num;???
好的,这是来自ILSpy的等效片段,这更有意义,我想反编译到C#没有产生有效的等价物?
'C#'
int& local = @Written;
byte[] numArray2 = this.FInSpool;
int num = (int) __Global.Min(numArray2 == null ? …Run Code Online (Sandbox Code Playgroud) 我今天已经开始在WCF反序列化中遇到错误 - 代码已经保持不变并且工作了几个月.
问题是我正在运行时XmlException说"名称不能以'<'字符开头".我已经调试到.NET源代码,似乎错误是从WCF服务调用反序列化返回对象.这些对象是使用自动属性定义的,并且支持字段似乎给出了类似的名称<MyProperty>k_BackingField,这是XmlException的来源.
我在网上看到了其他几个参考文献,其中人们接受的解决方案是"我将我的代码更改为不使用自动属性",这对我来说是不可接受的,因为我会有100个对象需要更改,(1000s)其中的属性).此外,当我上周运行它时,这个相同的代码工作正常,并且似乎不会影响所有序列化的DTO,只有一些.
为了让它更令人沮丧,它似乎有点间歇性.今天早上有时候没有例外......!
问题;
更新:经过一天左右的工作正常,这个问题再次出现 - 没有理由我可以找到它为什么会工作/不工作/再次工作,但在这里我们是.
我已经进一步跟踪问题,使用该ServiceKnownType属性与我在ServiceContracts上的一些代码相关,该属性用于定义序列化的已知类型.似乎虽然报告错误的类型甚至不是我当时正在进行的服务调用的一部分,但是这种错误发生在类型上,这些类型是这种已知类型的"发布"行为的一部分.
当我使用一些代理创建代码来应用某些服务行为时,会出现问题;
IOperationBehavior innerBehavior = new PreserveReferencesOperationBehavior(
description, this.preserveReferences, this.maxItemsInObjectGraph);
innerBehavior.ApplyClientBehavior(description, proxy);
Run Code Online (Sandbox Code Playgroud)
我不能调试ApplyClientBehavior代码,因为它是System.ServiceModel(或者我可以吗?)的一部分,但是该方法中的某些东西试图验证我使用我的ServiceKnownType属性发布的所有类型,并用它打破其中的一些XmlException.我没有想法为什么有些类型失败 - 而且只是为了它们的一些属性.
这是针对它们报告错误的类型的示例;
[Serializable]
public class MyDataObject
{
public ActivitySession(string id)
{
this.Id = id;
this.IsOpen = true;
}
public string Id { get; set; }
public bool IsValid { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
异常报告错误Id- > …
我正在使用以下WPF DataGrid + ComboBox方案来疯狂.
我有一组看起来像的课程;
class Owner
{
int ID { get; }
string Name { get; }
public override ToString()
{
return this.Name;
}
}
class House
{
int ID { get; }
Owner HouseOwner { get; set; }
}
class ViewModel
{
ObservableCollection<Owner> Owners;
ObservableCollection<House> Houses
}
Run Code Online (Sandbox Code Playgroud)
现在我想要的结果是一个DataGrid,它显示了House类型的行列表,在其中一列中,是一个ComboBox,它允许用户更改House.HouseOwner的值.
在这种情况下,网格的DataContext是ViewModel.Houses,对于ComboBox,我希望ItemsSource绑定到ViewModel.Owners.
这甚至可能吗?我正在努力解决这个问题...我能做的最好的事情就是正确地绑定ItemsSource,但是ComboBox(在DataGridTemplateColumn中)没有在每一行中显示House.HouseOwner的正确值.
注意:如果我将ComboBox从图片中取出并将TextBlock放入DataTemplate中,我可以正确地看到每行的值,但同时获取ItemsSource以及在选择中显示正确的值对我来说不起作用...
里面的背后我的代码,我已经设置窗口在DataContext到视图模型和对电网的DataContext设置ViewModel.Houses.对于除这个组合框之外的所有东西,它正在工作......
我的XAML对于违规列看起来像;
<DataGridTemplateColumn Header="HouseOwner">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Path=DataContext.Owners, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
DisplayMemberPath="Name"
SelectedItem="{Binding HouseOwner, RelativeSource={RelativeSource AncestorType={x:Type …Run Code Online (Sandbox Code Playgroud) 任何人都可以告诉我,当我想运行相同的构建配置但是在不同的VCS根目录时,配置TeamCity构建的最佳方法是什么?
例如; 我有一些存储库的"构建和测试"配置(对于repo中的每个项目),我想要复制master/develop/r1.0/etc分支中的所有设置?
在过去,我只是复制了整个构建配置集并更改了VCS根目录以实现此目的,但随着分支数量的增加(随着时间的推移增加了更多的发布分支),如何简化配置并最小化多少个位置如果关于构建的某些内容发生了变化,我需要进行更改吗?
我有一个简单的AngularJS $ http块就像这样;
$http(req).then(function successCallback(response) {
alert(response);
}, function errorCallback(response) {
alert(response);
});
Run Code Online (Sandbox Code Playgroud)
我的问题是当我的ASP.NET控制器返回HTTP错误代码时,JS errorCallback会收到一个像这样的对象;
{data: "", status: 304, config: Object, statusText: "Not Modified"}
Run Code Online (Sandbox Code Playgroud)
无论我做什么,我似乎无法在回调中填充数据属性.
如果我的控制器返回HTTP OK代码,则调用"success"回调,并且返回数据可用.但不是当它是一个错误......帮助!
控制器函数是一个WebAPI POST处理程序,看起来像;
[System.Web.Http.HttpPost]
public async Task<HttpResponseMessage> Save([FromBody]object data)
{
...<snip>...
return new HttpResponseMessage
{
StatusCode = HttpStatusCode.NotModified,
Content = new JsonContent(JObject.FromObject(new
{
success = false,
message = "User not authorised to perform this action."
}))
};
}
Run Code Online (Sandbox Code Playgroud)
同样的结构,但有;
StatusCode = HttpStatusCode.OK
Run Code Online (Sandbox Code Playgroud)
成功收到JS中的成功回调.
有没有推荐的WPF方法来创建一个在应用程序中使用的通用窗口样式?我有几个对话框出现在我的应用程序中,我希望它们的样式相同(相同的窗口边框,确定/取消按钮位置等),并根据情况简单地在每个中都有不同的"内容".因此,一个对话框中可能包含一个列表框,一个可能有一个文本框,依此类推.
我理解如何制作基本.cs用户控制文件,但是我不能为我的生活找到一个好方法来创建一个可以在启动时托管不同内容的窗口?
干杯,rJ
我在使用Castle.Windsor的TypedFactoryFacility概念时遇到了问题,并且不确定如何解决它(或者如果我可以).
我有一个像这样定义的ViewModel;
public class MyViewModel : IMyViewModel
{
// constructor which I aim to access through the factory
public MyViewModel(
ISomeContainerResolvableDependency a,
ISomePassedInDependency b)
{ ... }
}
Run Code Online (Sandbox Code Playgroud)
并且定义了相应的工厂接口;
public interface IMyViewModelFactory
{
IMyViewModel Create(ISomePassedInDependency a);
void Release(IMyViewModel vm);
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用类似的有效非null实例调用工厂时ISomePassedInDependency;
ISomePassedInDependency o = new SomePassedInDependency();
IMyViewModelFactory factory = IoC.Get<IMyViewModelFactory>();
IMyViewModel viewModel = factory.Create(o);
Run Code Online (Sandbox Code Playgroud)
我得到一个异常,指出温莎城堡无法从解决的依赖IMyViewModel上ISomePassedInDependency.在这种情况下,我正在提供ISomePassedInDependency实例,只希望设施ISomeContainerResolvableDependency为我解决.
如果我将构造函数定义更改为接受我传入的值类型(int例如)而不是ISomePassedInDependency实例,则工厂调用将起作用.因此,似乎Castle Windsor内部假设所有引用类型都将被容器解析而其他任何东西都不会被解析?
有没有办法使这项工作?