我有一个包含一些项目的Visual Studio 2010解决方案.我可以使用Build - > Build Solution或Build - > Build MyCompany.MyProduct.MyProject成功构建.构建完成后,按CTRL + F5并成功运行启动项目.这按预期工作.
在我更改源文件后,保存它然后再次构建(使用Build - > Build Solution或Build - > Build MyCompany.MyProduct.MyProject)它成功构建.我仍然可以按CTRL + F5并运行启动项目.这再次按预期工作.
问题出现在以下场景中:更改源文件后,保存并直接按CTRL + F5,然后Visual Studio 2010显示BUILD FAILED并且没有错误.它并没有启动我的启动项目(当然).
我错过了什么吗?
我有一些关于如何在库中提供相同功能的同步和异步实现的问题.我先问他们然后提供下面的示例代码(实际上相当多,但事实上它很简单).
有没有办法避免违反DRY原则?考虑的实现JsonStreamReader.Read,JsonStreamWriter.Write,JsonStreamWriter.Flush,ProtocolMessenger.Send,ProtocolMessenger.Receive和他们的异步版本.
在对同一方法的同步和异步版本进行单元测试时,是否有办法避免违反DRY原则?我正在使用NUnit,虽然我猜所有框架在这方面应该是相同的.
应该如何实施的方法返回Task或Task<Something>考虑Take 1和Take 2变体ComplexClass.Send和ComplexClass.Receive?哪一个是正确的,为什么?
考虑到不知道库将在何处使用(控制台应用程序,Windows窗体,WPF,ASP.NET),总是在库中包含.ConfigureAwait(false)后是否正确await?
以下是我在第一个问题中提到的代码.
IWriter并且JsonStreamWriter:
public interface IWriter
{
void Write(object obj);
Task WriteAsync(object obj);
void Flush();
Task FlushAsync();
}
public class JsonStreamWriter : IWriter
{
private readonly Stream _stream;
public JsonStreamWriter(Stream stream)
{
_stream = stream;
}
public void Write(object obj)
{
string json = JsonConvert.SerializeObject(obj); …Run Code Online (Sandbox Code Playgroud) 我提出一个简单的模型:
public class UserDocument
{
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
public string DisplayName { get; set; }
public List<string> Friends { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我正在使用最新的C#驱动程序,它能够使用C#对象替换文档,该对象将自动更新其所有字段.问题是我想更新除用户朋友之外的所有字段,因为它是包含与其他文档的对象关系的字段.当然,我可以手动更新我想要更新的每个字段,这里只有两个.
但这个例子很简单,只是为了说明我的观点.实际上,字段更多,更新每个字段会更难.这将需要每条线路使用一条Set运营商.此外,必须以与更新自动生效相反的方式支持新添加的字段.
有没有办法实现这一点 - 只需指定排除字段列表自动更新所有字段?
为了保存和加载我的布局,我遵循了这里的说明,但它对我不起作用.
我在XAML里面有这个MainWindow:
<StackPanel Orientation="Vertical">
<Button Content="Save"
Click="SaveButton_Click"/>
<Button Content="Load"
Click="LoadButton_Click"/>
<ad:DockingManager x:Name="myDM">
<ad:LayoutRoot>
<ad:LayoutPanel>
<ad:LayoutDocumentPane>
<ad:LayoutDocument Title="Document">
<TextBox />
</ad:LayoutDocument>
</ad:LayoutDocumentPane>
</ad:LayoutPanel>
<ad:LayoutRoot.LeftSide>
<ad:LayoutAnchorSide>
<ad:LayoutAnchorGroup>
<ad:LayoutAnchorable Title="Left">
<TextBox/>
</ad:LayoutAnchorable>
</ad:LayoutAnchorGroup>
</ad:LayoutAnchorSide>
</ad:LayoutRoot.LeftSide>
</ad:LayoutRoot>
</ad:DockingManager>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
这些是按钮点击的事件处理程序:
private void SaveButton_Click(object sender, RoutedEventArgs e)
{
XmlLayoutSerializer layoutSerializer = new XmlLayoutSerializer(myDM);
using (var writer = new StreamWriter("test"))
{
layoutSerializer.Serialize(writer);
}
}
private void LoadButton_Click(object sender, RoutedEventArgs e)
{
XmlLayoutSerializer layoutSerializer = new XmlLayoutSerializer(myDM);
using (var reader = …Run Code Online (Sandbox Code Playgroud) 我用WiX 3.7编写了一个首先安装.net 4.5的引导程序,然后是我的应用程序的MSI:
<Chain>
<PackageGroupRef Id="NetFx45Redist"/>
<MsiPackage Id="MainAppPackage"
After="NetFx45Redist"
SourceFile="..\bin\Debug\MyApp.msi"/>
</Chain>
Run Code Online (Sandbox Code Playgroud)
该WiX的文件说,NetFx45Redist是一个独立的设置,同时NetFx45Web为网络设置.在我使用设置为Id的引导程序NetFx45Redist构建之后,与使用NetFx45Web指定的Id 构建它时相比,它具有相同的大小.我很好奇所以我下载了WiX源(v3.7).我惊讶地发现这两个PackageGroup元素之间几乎没有什么区别.
该DownloadUrl对NetFx45Web是http://go.microsoft.com/fwlink/?LinkId=225704,而一个NetFx45Redist是http://go.microsoft.com/fwlink/?LinkId=225702.根据RemotePayload\@Size属性NetFx45Web是1005568字节并且NetFx45Redist是50352408字节.
我希望NetFx45Redist在我的引导程序中包含.net 4.5设置,不需要下载.我觉得这是错的.PackageGroup我应该使用哪个,以及2个下载的.net 4.5安装之间有什么区别?
有谁知道如何在AvalonDock 2.0中更改LayoutAnchorable和LayoutDocument标题的字体属性?我希望能够应用我的WPF应用程序中随处使用的样式以保持一致性.
我有以下代码:
while (!isCancellationRequested)
{
byte[] frameBytes = socket.ReceiveFrameBytes();
MyData data = new MyData();
data.Deserialize(frameBytes);
// send the data somewhere somehow...
}
Run Code Online (Sandbox Code Playgroud)
我想做的,但我在文档中找不到的是可以避免在每个上创建新字节数组的东西socket.Receive:
byte[] frameBytes = new byte[123];
while (!isCancellationRequested)
{
socket.ReceiveFrameBytes(frameBytes);
MyData data = new MyData();
data.Deserialize(frameBytes);
// send the data somewhere somehow...
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
.net ×4
c# ×4
avalondock ×2
wpf ×2
async-await ×1
bootstrapper ×1
build ×1
dry ×1
mongodb ×1
netmq ×1
wix ×1
wix3 ×1
zeromq ×1