我正在维护一个基于WPF的应用程序,它包含一个基于WinForms的WebBrowser控件,该控件基于IE Web浏览器控件.当我们部署时,我们还必须提供Microsoft.mshtml.dll并为ClickOnce发布过程执行一些自定义配置,以便让事情发挥作用.
我很好奇,使用C#4.0中新的NoPIA和Type Equivalence功能以及动态类型功能,我们可以期望如果我们升级它,我们可以删除对Microsoft.mshtml.dll程序集的依赖吗?如果是这样,这不仅会减少我们部署的规模,而且还会简化我们的发布过程.
我的理解是,我们应该能够将通常自动生成的类型嵌入到COM类型的额外程序集中,例如Visual Studio的MapPoint控件.我不知道这是否也适用于Microsoft.mshtml.dll甚至是在最简单的情况下它是如何完成的.如果有人可以解释这些新功能对依赖COM互操作的项目的实际影响,特别是Microsoft.mshtml.dll程序集,那将对我有很大帮助.
虽然最近在项目中尝试采用更多TDD实践,但我遇到了涉及未来需求的测试情况,这让我对其他人如何解决这个问题感到好奇.
比方说,我正在开发一个名为SuperUberReporting的应用程序,当前版本是1.4.当我正在开发要包含在SuperUberReporting 1.5中的功能时,我编写了一个新文件导出功能的测试,该功能允许将报告结果导出为CSV文件.在编写该测试时,我发现支持导出到某些其他格式的功能将针对更高版本的1.6,1.7和1.9,这些版本记录在问题跟踪软件中.现在我面临的问题是我是否应该为这些其他格式编写测试,还是应该等到实际实现这些功能?这个问题涉及TDD的一些基础,我想更广泛地提出这个问题.
只要需求已知,或者需求的稳定程度能否以某种方式决定是否应该编写测试,是否可以预先编写测试?
更一般地说,应该在多长时间内编写测试?编写一个将失败两年的测试是否可以实现该功能?如果是这样,那么如何组织他们的测试来分离需要通过的测试与那些尚未通过的测试?我目前正在使用NUnit进行.NET项目,所以我不介意细节,因为它们可能更好地演示如何完成这样的组织.
当尝试对 Akka.NET 中的集群设置进行故障排除时,集群心跳消息正在填满日志。
[DEBUG][8/9/2016 6:04:32 PM][Thread 0011][[akka://mysystem/system/cluster/core/daemon#1680718572]] [Initialized] 收到 Akka.Cluster.GossipStatus
有没有办法选择性地阻止此日志事件,因为Akka for JVM 似乎是可能的?
我正在尝试按照本指南创建我的第一个nuget包.我在build子目录中生成了一个nuspec文件和一个MSBUILD目标文件,并且都包含在csrpoj的构建输出中.我现在nuget pack按照我的bin目录中的建议运行我的nuspec文件,我收到以下错误.
> nuget pack MyPackage.nuspec
Value cannot be null or an empty string.
Parameter name: value
Run Code Online (Sandbox Code Playgroud)
错误似乎很清楚,但不能为null的值不是.这是我当前的nuspec文件的示例.
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl>
<projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>
<iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
<copyright>Copyright 2016</copyright>
<tags>source version tfs git</tags>
<packageTypes>
<packageType type="Dependency" />
</packageTypes>
</metadata>
<files>
<!-- Include everything in \build -->
<file src="build\**"
target="build" />
</files>
</package>
Run Code Online (Sandbox Code Playgroud) 我有一个自定义按钮控件,不是从Button派生的.我是否可以实现IsDefault的等价物,以便调用与我的控件关联的命令.我希望这是一个附加属性,我可以添加到任何控件,但据我所知,它似乎不是.如果我的控件不是来自Button,或者至少有一个合理的解决方法,我是不是运气不好?
更新: 我刚刚看了一下反射器,看看它是如何在Button下进行的,我必须说它不是我见过的最自我解释的代码.看来,为了处理Button默认的概念,至少有3个自定义类型的自定义类型.由于似乎没有现成的借用IsDefault功能的方法,我想我必须缩小我想要实现的目标,这样我至少可以获得默认焦点和访问键处理工作而忽略Button.IsDefault实现中隐藏的复杂性.
更新: 添加了以下代码示例,显示了我尝试itowlson的建议的不必要的尝试.
MyButton.xaml
<UserControl x:Class="IsDefault.MyButton"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
Height="28"
Width="117">
<Grid>
<Button Click="Button_Click">
<Button.Template>
<ControlTemplate>
<Border BorderThickness="2"
CornerRadius="12"
Background="DarkSlateBlue">
<TextBlock Foreground="WhiteSmoke"
HorizontalAlignment="Center"
VerticalAlignment="Center">Some Text</TextBlock>
</Border>
</ControlTemplate>
</Button.Template>
</Button>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
MyButton.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace IsDefault
{
/// <summary>
/// Interaction logic for MyButton.xaml
/// </summary>
public partial …Run Code Online (Sandbox Code Playgroud) 尝试通过LinqPad在F#中编写更多查询我遇到了一个有趣的事情,使用where子句.
let dc = new TypedDataContext()
let q = query {
for o in dc.OrderItem do
where (o.Description.Contains("spam"))
select o
}
q |> Dump
Run Code Online (Sandbox Code Playgroud)
如果我删除括号,o.Description.Contains("spam")我会得到下面经常看到的错误消息.
连续参数应该用空格或元组分隔,涉及函数或方法应用程序的参数应该用括号括起来(使用外部F#编译器)
当我看到这个错误时,我通常意识到我没有提供足够的信息,以便编译器理解我试图链接先前方法调用或属性获取访问器调用的结果但在这种情况下它是我不清楚.另外,我很好奇是否有更习惯的方式来满足编译器的条件而不必到达表达式以添加开括号和右括号.
我需要在 F# 中调用bool.TryParse并且我在编译器/Ionide 上遇到了一些困难。
前任。
let value = true
let parsable = bool.TryParse("True", &value)
Run Code Online (Sandbox Code Playgroud)
我在 Ionide for VSCode 中看到的错误如下所示。
val value : bool 全名:value
装配:example3
'ByRefKinds.InOut' 类型与类型 'ByRefKinds.In'F# Compiler(1) 不匹配
这是我在 F# 中使用 call by ref 关键字和语法的第一个示例,所以我不确定我做错了什么,并且byrefs文档似乎对理解这个特定场景没有多大帮助。
f# ×2
.net-4.0 ×1
akka.net ×1
button ×1
c# ×1
com-interop ×1
linq ×1
logging ×1
mshtml ×1
nuget ×1
nunit ×1
organization ×1
requirements ×1
tdd ×1
wpf ×1