小编aje*_*jeh的帖子

如何让单元测试在x64平台上运行

我有一个必须在x64模式下运行的C#应用​​程序.问题是我尝试创建在x64应用程序中运行方法的单元测试,而单元测试项目甚至不会构建.尝试构建时出现以下错误.

加载C时出错:.....\bin\x64\Debug .... UnitTests.dll:无法加载测试容器'C:.....\bin\x64\Debug .... UnitTests.dll '或其中一个依赖项.如果将测试项目程序集构建为64位程序集,则无法加载它.构建测试项目程序集时,请为平台选择"Any CPU".要在64位处理器上以64位模式运行测试,必须在"主机"选项卡中更改测试设置,以便在32位进程中运行测试.错误详细信息:无法加载文件或程序集'file:/// C:..... UnitTests\bin\x64\Debug .... UnitTests.dll'或其依赖项之一.尝试加载格式不正确的程序.

我试图将单元测试更改为x64以及任何CPU,仍然无法让它运行.有没有解决这个问题?

.net c# asp.net visual-studio

46
推荐指数
2
解决办法
3万
查看次数

XmlWriter异步方法

我在msdn文档中找到了使用XmlWriter异步的示例http://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.aspx

async Task TestWriter(Stream stream) 
{
    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Async = true;
    using (XmlWriter writer = XmlWriter.Create(stream, settings)) {
        await writer.WriteStartElementAsync("pf", "root", "http://ns");
        await writer.WriteStartElementAsync(null, "sub", null);
        await writer.WriteAttributeStringAsync(null, "att", null, "val");
        await writer.WriteStringAsync("text");
        await writer.WriteEndElementAsync();
        await writer.WriteProcessingInstructionAsync("pName", "pValue");
        await writer.WriteCommentAsync("cValue");
        await writer.WriteCDataAsync("cdata value");
        await writer.WriteEndElementAsync();
        await writer.FlushAsync();
    }
}
Run Code Online (Sandbox Code Playgroud)

我所知道的关于线程和异步编程的所有内容都告诉我,这是太慢的代码并且使用同步Write方法会快得多.我修改了这段代码并进行了测试.我发现我的正确和同步代码在文件超过100Mb时的速度提高3-4倍,在我的环境中低于10mb的文件速度提高8-10倍.

所以我的问题是,这种代码是否可用,并提供合理的性能提升?

.net c# async-await c#-5.0

11
推荐指数
2
解决办法
3758
查看次数

将所有treeView父级和子级复制到另一个treeView c#WinForms

我试图使用以下代码将树视图(完全)的整个树(完全所有节点)复制到另一个树视图:

        TreeNodeCollection myTreeNodeCollection = treeView1.Nodes;

        TreeNode[] myTreeNodeArray = new TreeNode[treeView1.Nodes.Count];

        treeView1.Nodes.CopyTo(myTreeNodeArray, 0);

        treeView2.Nodes.AddRange(myTreeNodeArray);
Run Code Online (Sandbox Code Playgroud)

但这不允许我这样做,它要求删除源treeview中的节点或使用它克隆!我怎样才能做到这一点?我不希望我的源treeview在这个过程中丢失任何东西.

**更新**好的我发现了一个复杂的代码(对我来说!!)但是我该如何使用它?

    public static T DeepTreeCopy<T>(T obj)
    {
        object result = null;
        using (var ms = new MemoryStream())
        {
            var formatter = new BinaryFormatter();
            formatter.Serialize(ms, obj);
            ms.Position = 0;
            result = (T)formatter.Deserialize(ms); ms.Close();
        }
        return (T)result;
    } 
Run Code Online (Sandbox Code Playgroud)

c# treeview clone copy

9
推荐指数
3
解决办法
2万
查看次数

将基于特定大小的日志轮换为带日期/时间戳的副本

碰巧的是,有一个BAT文件在Windows Server 2008上运行某个命令行工具,并将输出重定向到一个不断增长的日志,我想在每次日志增长到一定大小时都将其旋转。毫无疑问,将BAT文件更改为CMD会很耗时间和精力。因此,我不得不编辑该BAT文件。

下面的所有内容都在Windows 7和2008上进行了测试。

尝试了以下内容:

for %%I in (Log.txt) do @echo %%~zI >> size.tmp
set /p logSIZE=<size.tmp
del size.tmp
if %logSIZE% GTR 100 (
  echo OK
)
Run Code Online (Sandbox Code Playgroud)

当时的测试Log.txt是157个字节,因此它得到了回应OK。然后我通过将100增加到200进行了否定测试,但没有回声OK。到目前为止,一切都很好。

接下来,我尝试将日期和时间戳连接到文件名中:

For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set dateStamp=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set timeStamp=%%a%%b)
echo Log_%dateStamp%_%timeStamp%.txt
Run Code Online (Sandbox Code Playgroud)

这也像一种魅力。下一步是将两个脚本合并为一个:

for %%I in (Log.txt) do @echo %%~zI >> size.tmp
set /p logSIZE=<size.tmp
del size.tmp
if %logSIZE% GTR 100 ( …
Run Code Online (Sandbox Code Playgroud)

batch-file environment-variables

5
推荐指数
1
解决办法
787
查看次数

为什么智能感知可以看到命名空间,但编译器却看不到?

Helpers下面的屏幕截图显示 VS 2012 智能感知从命名空间中获取命名空间SendGrid,但仍然存在编译时错误

The type or namespace name 'Helpers' does not exist in the namespace 'SendGrid'
(are you missing an assembly reference?)
Run Code Online (Sandbox Code Playgroud)

SendGrid.Helpers 智能感知

我检查的内容:

  • 该项目是 .NET 4.5,从未改变。
  • SendGrid和SendGrid.CSharp.HTTP.Client参考文献都有 v4.0.30319 运行时版本,与其余参考文献相同。
  • Newtonsoft.JSON使用的SendGrid也是相同的运行时版本。
  • 两者都设置为复制本地 True。
  • 项目中没有其他错误。
  • F12 跟随命名空间中的方法SendGrid.Helpers成功导航到其定义,因此我推测引用的 DLL 没有问题???
  • 清理并重建解决方案,重新启动 VS 和机器。
  • 在 3.5 和 4.5 之间来回切换项目的 .NET 版本多次。

SendGrid使用 Nuget 添加到现有项目中。

c# sendgrid visual-studio-2012

5
推荐指数
1
解决办法
1089
查看次数

成员定义了多次错误消息?

我在vs2010中使用c#,并且学习oop; 我第一次尝试在appCode文件夹中声明对象提交时不断给出错误消息

this member defined more than once
ambiguity between Submission.SubmissionId and Submission.SubmissionId
Run Code Online (Sandbox Code Playgroud)

此错误抛出每个变量(CustId,BroId,Coverage).我按照我在语法教程中找到的模型; 这是问题吗?代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

public class Submission 
    {
        int SubmissionId;
        int CustId;
        int BroId;
        int Coverage;
        //Array Product[] products;

        public Submission() {}
        public int SubmissionId 
        {
            get { return SubmissionId; }
            set { SubmissionId = value; }
        }
        public int CustId
        {
            get { return CustId; }
            set { CustId = value; }
        }
        public int BroId
        {
            get { return …
Run Code Online (Sandbox Code Playgroud)

c# visual-studio

4
推荐指数
1
解决办法
1万
查看次数

JavaFX FXML模式不支持窗格内的上下文菜单的理由是什么?

可以将上下文菜单添加到滚动窗格,但不能添加到其他类型的窗格.为什么?

javafx

4
推荐指数
1
解决办法
1288
查看次数

JavaFX 材质的凹凸和规格图

当 JavaFX8 代码加载颜色、凹凸和规格贴图时,颜色和规格按预期工作,但凹凸贴图会产生奇怪的效果。这三张都是墨卡托地球地图。一般来说,凹凸贴图没有添加3D效果。凹凸贴图只会导致喜马拉雅山和安第斯山脉在地球的明亮一侧显示为带有闪亮边框的黑色区域,而在彩色地图上显示在阴影一侧。我究竟做错了什么?

Image diffMap = null;
Image bumpMap = null;
Image specMap = null;
diffMap = new Image(MoleculeSampleApp.class.getResource("Color Map1.jpg").toExternalForm());
bumpMap = new Image(MoleculeSampleApp.class.getResource("Bump1.jpg").toExternalForm());
specMap = new Image(MoleculeSampleApp.class.getResource("Spec Mask1.png").toExternalForm());
final PhongMaterial earthMaterial = new PhongMaterial(Color.WHITE, diffMap, specMap, bumpMap, null);
earthMaterial.setDiffuseColor(Color.WHITE);
earthMaterial.setSpecularColor(Color.WHITE);
Run Code Online (Sandbox Code Playgroud)

作为 3d 新手,我的第一个想法是应该有某种将凹凸贴图的像素颜色值缩放到高程的方法,但我缺少这种方法。

javafx bump-mapping

3
推荐指数
1
解决办法
8590
查看次数

如何理解JavaFX三角网格?

只是试图理解JavaFX文档重新三角形网格.此代码可以工作并绘制一个矩形.

public class Shape3DRectangle extends TriangleMesh {

    public Shape3DRectangle(float Width, float Height) {
        float[] points = {
            -Width/2,  Height/2, 0, // idx p0
            -Width/2, -Height/2, 0, // idx p1
             Width/2,  Height/2, 0, // idx p2
             Width/2, -Height/2, 0  // idx p3
        };
        float[] texCoords = {
            1, 1, // idx t0
            1, 0, // idx t1
            0, 1, // idx t2
            0, 0  // idx t3
        };
        /**
         * points:
         * 1      3
         *  -------   texture:
         *  |\    |  1,1 …
Run Code Online (Sandbox Code Playgroud)

java javafx

3
推荐指数
1
解决办法
9811
查看次数

使用ExecutorService并行重复执行多个类似的任务

Java 代码简化后如下所示:

while(someCondition)
{
    SomeType a = CalcResult(param1);
    SomeType b = CalcResult(param2);
    SomeType c = CalcResult(param3);

    // Do something with a, b and c
}
Run Code Online (Sandbox Code Playgroud)

CalcResult()很费时间。该应用程序在 SMP 系统上运行。有人试图尝试在自己的 CPU 上同时运行所有三个计算,而不是按顺序运行它们。需要并行的始终是这 3 个任务,而不是任意数量的任务(这就是算法)。每项任务可能比其他任务花费更多或更少的时间,但通常差异不会那么大 (20-30%)。

由于他们需要返回结果,我从/sf/answers/640429471/查看了执行器服务解决方案:

ExecutorService executor = Executors.newSingleThreadExecutor();
Callable<Integer> callable = new Callable<Integer>() {
    @Override
    public Integer call() {
        return 2;
    }
};
Future<Integer> future = executor.submit(callable);
// future.get() returns 2
executor.shutdown();
Run Code Online (Sandbox Code Playgroud)

由于我对 Java 的经验主要是 servlet/JSP 开发,所以我没有线程方面的经验,并且不确定该代码片段是否适用于 3 个任务而不是一个任务。

如何提交3个任务,每个任务都有自己的参数值,并等待所有任务都返回计算结果,同时确保为它们创建线程不会抵消在自己的CPU上运行的优势,即是否有一个在循环开始之前创建线程一次while(),然后简单地将新的paramN线程推入循环内的每个线程,唤醒它们,并等待它们执行所有计算的方法?

java concurrency multithreading executorservice

3
推荐指数
1
解决办法
5451
查看次数

保护我的代码免受Newtonsoft JSON的侵害

我正在构建一个教科书.NET WebAPI Web服务,在最简单的情况下,它应该接收一个GET请求并返回一个JSON对象数组.

但是该项目还加载了NewtonsoftJSON nuget包,显然该包重新定义了ApiController类,因此它的Json()方法有不同的声明.最终结果是我得到以下编译时错误:

在此输入图像描述

如何保护我的控制器声明不被Newtonsoft重新定义?

public class ImmediateInformationController : ApiController
{
    public JsonResult Get([FromUri] ImmediateInformation ii)
    {
        // some code here
        return this.Json(iil, JsonRequestBehavior.AllowGet);
    }
}
Run Code Online (Sandbox Code Playgroud)

一点背景:最初我只是回来iil,但是在浏览器中测试时,它提示下载ImmediateInformation.json文件,其中包含我需要的JSON.以上是尝试将JSON作为纯文本返回,这使我发现Newtonsoft ApiController在参数类型与MSDN文档不匹配时重新定义.

在此输入图像描述

重新上限:问题只是使用JSON下载问题来说明我在做什么.我如何确保当我声明控制器类是其后代时ApiController,它是Microsoft的API控制器,而不是Newtonsoft的?

c# json.net asp.net-web-api

3
推荐指数
1
解决办法
106
查看次数

使用 ImageMagic 裁剪图像会产生错误尺寸的图像 - 为什么?

有一堆代表页面的图像,是从书中扫描出来的,并且已经用 ImageMagic 进行了裁剪。它们都是统一的 629x625 像素。我需要进一步处理它们以准备创建 PDF:将它们分成奇数页和偶数页。他们的名字是canvas-00.png通过canvas-53.png

当我使用以下命令首先获取奇数页时,我得到了从错误的水平偏移中提取的完全被屠宰的 275x563 像素图像:

convert canvas-??.png -crop 314x625+0+0 ~/Pictures/odd/canvas.png
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

PS:最初图像较大,包含额外的边距,扫描仪的盖子可见,我使用非常相似的命令成功地将它们裁剪为 629x625,但当然具有非零偏移量+140+71。因此,让我感到困惑的是,一个明显更琐碎的零偏移命令根本不起作用。

image-manipulation imagemagick

2
推荐指数
1
解决办法
1597
查看次数

在af#application中使用ac#assembly的命名空间?

有一个带有公共静态类的ac#assembly Something.它有一个公共静态方法DoSomething(string source, string dest, string file, string arch)

我不知道f#并且商店中没有人知道它了,但是我需要将一个f#项目使用的API替换为c#程序集中的内容.

我想在另一个解决方案的f#项目中使用该方法,并添加了对第一个程序集的\ bin\Debug\Something.exe的引用(是的,它兼作命令行EXE).

然后我添加open Something到需要它的f#单元.一旦.NET版本同步,程序集似乎已加载.

现在我编写了这段代码:

let src = "C:\"
let dst = "D:\"
let file = "readme.txt"
let arch = "E:\"
Something.DoSomething src dst file arch
Run Code Online (Sandbox Code Playgroud)

由于此错误,它不会构建:

Error   2
The member or object constructor 'DoSomething' takes 4 argument(s) but is here given 1.
The required signature is 'Something.DoSomething(source: string, dest: string, ?file: string, ?archive: string) : bool'.
Run Code Online (Sandbox Code Playgroud)

我真的只传递了一个错误地认为我正在通过所有4个的论点吗?

f#

1
推荐指数
1
解决办法
61
查看次数