小编Chr*_*sto的帖子

如何在.NET中调试stackoverflowexception

场景:

我刚刚开始实现一堆代码,但是当我执行它时,我会抛出一个StackOverflowException?StackOverflowException没有堆栈跟踪,所以我卡住了.我知道为什么会发生堆栈溢出,但要修复它我需要知道它的根目录是什么.

我得到的是:tag-you-it.dll中出现未处理的"System.StackOverflowException"类型异常

选项:

  1. 扫描所有更改并尝试确定问题所在.(可能很慢)
  2. 使用调试器并逐步执行直到找到问题.(可能比1好)
  3. 使用配置文件并查找最常用的方法.

PS:

这是一种假设情况(虽然并不常见),因此没有可用的代码.

.net debugging

34
推荐指数
5
解决办法
2万
查看次数

使用Java 8u20进行慢速AES GCM加密和解密

我正在尝试使用AES/GCM/NoPadding加密和解密数据.我安装了JCE Unlimited Strength Policy Files并在下面运行了(简单的)基准测试.我使用OpenSSL做了同样的事情,并且能够在我的PC上实现超过1 GB/s的加密和解密.

使用下面的基准测试,我只能在同一台PC上使用Java 8进行3 MB/s的加密和解密.知道我做错了什么吗?

public static void main(String[] args) throws Exception {
    final byte[] data = new byte[64 * 1024];
    final byte[] encrypted = new byte[64 * 1024];
    final byte[] key = new byte[32];
    final byte[] iv = new byte[12];
    final Random random = new Random(1);
    random.nextBytes(data);
    random.nextBytes(key);
    random.nextBytes(iv);

    System.out.println("Benchmarking AES-256 GCM encryption for 10 seconds");
    long javaEncryptInputBytes = 0;
    long javaEncryptStartTime = System.currentTimeMillis();
    final Cipher javaAES256 = Cipher.getInstance("AES/GCM/NoPadding");
    byte[] tag …
Run Code Online (Sandbox Code Playgroud)

benchmarking cryptography java-8 aes-gcm

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

如何在 spring-test-junit5 中使用嵌套测试?

我一直在玩JUnit 5spring-test-junit5。然后我尝试使用嵌套测试功能,但我的测试失败了。当我使用 gradle 直接从命令行运行时,也会发生这种情况。

@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = TestConfig.class)
@DisplayName("In cat club")
public class NestedCatTests {
    @Autowired
    Cat cat;

    @Autowired
    List<Cat> cats;

    @Test
    @DisplayName("Catbert is the cat")
    void catWasAutowired() {
        assertEquals(
                "Catbert",
                cat.getName()
        );
    }

    @Nested
    @DisplayName("Catbert")
    class IsMemberOfClub {
        @Test
        @DisplayName("is a member")
        void isMemberOf() {
            assertTrue(cats.contains(cat));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下异常:

java.lang.IllegalStateException: Failed to load ApplicationContext

at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230)
at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:91)
at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$null$1(ClassTestDescriptor.java:196)
at org.junit.jupiter.engine.descriptor.JupiterTestDescriptor.executeAndMaskThrowable(JupiterTestDescriptor.java:102)
...
at …
Run Code Online (Sandbox Code Playgroud)

spring-test junit5

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

如何在指定动态端口(0)时确定ASP.NET Core 2正在侦听哪个端口

我有一个ASP.NET Core 2.0应用程序,我打算作为一个独立的应用程序运行.应用程序应启动并绑定到可用端口.为此,我将WebHostBuilder配置为侦听" http://127.0.0.1:0 "并使用Kestrel服务器.一旦web主机开始监听,我想用文件中的实际端口保存url.我想尽早做到这一点,因为另一个应用程序将读取文件以与我的应用程序进行交互.

如何确定Web主机正在侦听的端口?

kestrel-http-server asp.net-core-2.0

7
推荐指数
3
解决办法
4047
查看次数

当ViewingMode设置为滚动时,调整FlowDocumentReader的滚动增量?

我在FlowDocumentReader中使用ViewingMode ="Scroll"显示FlowDocument.如果我在鼠标上使用滚轮,则文档滚动速度非常慢.我想增加滚动步骤.

  1. 我试图在控制面板中更改鼠标的滚动设置,但这没有任何效果.我认为WPF忽略了FlowDocumentScrollViewer的设置.

  2. 我在FlowDocument和FlowDocumentReader上添加了一个Scroll事件,但是当我使用鼠标滚轮时,它不会触发.

  3. 我在FlowDocumentReader上添加了一个Loaded事件,得到了ScrollViewer后代,从滚动查看器的模板中找到了ScrollBar("PART_VerticalScrollBar")并调整了SmallChange和LargeChange属性.这也没有任何影响.

有人有主意吗?

c# wpf scroll

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

以编程方式在MSTest中超时测试

我有一种情况,我正在使用单元测试来执行执行测试的外部工具.我可以从工具的退出代码中确定测试是通过,失败还是超时.

有什么方法可以让单元测试失败,将测试结果设置为超时而不是失败?

我尝试过抛出TimeoutException,但这与使用Assert有相同的结果.

编辑: 我们将单元测试与TFS中的测试用例相关联.在Microsoft测试中心,测试运行中的测试可以有许多状态.其中一个是超时状态.我试图使我的测试失败,以便它在这种状态下正确显示,并且不会与失败的测试用例混在一起.

c# tfs mstest

6
推荐指数
2
解决办法
5009
查看次数

是否有VS2008的插件来管理喜爱的解决方案/项目?

在VS2008的启动页面上的"Recent Projects"部分对我来说感觉很无用.

我习惯于检查多个存储库以处理不同的功能.我们的存储库结构非常深入.文件 - >"最近的项目"菜单没有显示足够的路径让我找出它要打开的项目.我最接近的是将鼠标悬停在启动页面上"最近项目"部分的项目中,因为这样我就可以在状态栏中读取整个路径了.我仍然倾向于经常打开项目以测试不同的想法,但总的来说我只在一些项目上工作.

我认为拥有一个"最喜欢的项目"部分而不是"最近的项目",我可以为自己命名的条目会很棒.

有谁知道VS2008这样的加载项?

favorites add-in visual-studio-2008

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

如何在csproj模板中使用相对导入?

我创建了一个项目模板,其中包含一个csproj,其中包含一个指向项目文件的Import,其中列出了所有第三方项目位置.我总是使用这个项目模板在同一个相对目录中创建项目.

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="../../../3rdParty/ThirdParty.targets" />
  ...
  <ItemGroup>
    <Reference Include="Library, Version=$(LibraryVersion), Culture=neutral, PublicKeyToken=$(LibraryPublicKeyToken), processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>$(LibraryDir)LibraryDll.dll</HintPath>
    </Reference>
  </ItemGroup>
  ...
</Project>
Run Code Online (Sandbox Code Playgroud)

csproj文件在Visual Studio中以及从命令提示符运行msbuild时正常工作.当我尝试使用项目模板创建项目时,我收到以下错误:

C:\ Users ...\AppData\Local\Temp\534cylld.o0p\Temp\MyModule.csproj(3,3):导入的项目"C:\ Users ...\AppData\Local\3rdParty\ThirdParty.targets " 没找到.确认声明中的路径是否正确,以及该文件是否存在于磁盘上.

似乎Visual Studio首先尝试在临时位置打开项目.我已经尝试将$(MSBuildProjectDirectory)添加到导入位置,希望它可能强制它使用我想要的位置,但这也不起作用.

有什么建议?

.net csproj project-template visual-studio

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

如何修补.NET程序集?

如果我两次编译一个C#项目,我会得到两个程序集.这些程序集不完全相同(使用二进制diff).我可以想到为什么会这样,但事实仍然是两个组件的来源是相同的.

我担心在这些程序集之间创建补丁,并在客户机器上应用补丁.

有谁知道我可以创建和应用补丁的库(最好是.NET)或工具?

理想情况下,它还应该处理小的更改,例如更改项目级别的依赖项或调整源代码中的几行.它不一定能够处理更大的更改,因为我很乐意在这种情况下完全替换程序集.

更新:

我认为更多的背景可能有助于澄清我所得到的.我有一个持续集成服务器构建我的应用程序.我更改文件和程序集版本以反映我正在构建的内部版本号和版本.我可以用不同的方式完成它,但这是我喜欢的选项.

这会导致在构建应用程序时更改程序集引用,但我很满意.我现在关注的是将更新分发给以前发布的版本.我使用InstallShield构建更新.InstallShield可用的程序集简化为小补丁.这些不会大幅增加更新的大小.

我的应用程序有一些数据文件,基本上是包含程序集的加密存档.InstallShield无权访问这些程序集或了解我的存档.它不知道如何解密和提取它.我编写了自己的补丁程序,它在先前的存档中找到已更改的文件,并用新的更新版本替换它们.基本上是搜索和替换策略.

一个存档包含近百个(并且正在增长)这些程序集,其中一些程序集包含大型数据文件作为资源.这些程序集依赖于作为应用程序一部分的程序集.它们也在持续集成构建期间编译.在构建期间不编译它们将为依赖性问题留下空间,我不愿意尝试管理它.每次创建补丁时,都会包含所有这些程序集.我现在正在寻找通过为这些程序集生成补丁来减少补丁大小的选项.

.net c# assemblies

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