小编GET*_*Tah的帖子

Assembly.ReflectionOnlyLoadFrom不工作

我有一个Library1.dll包含一些接口的程序集,它们被序列化为数据库中的字节数组.出于某些原因,我们必须更改接口属性和定义.所以现在我正在编写一个迁移实用程序.所以我有2个版本Library1.dll,在我的实用程序中,我创建了一个文件夹,我存储了新版本Library1.dll.这个实用程序反过来也引用Library1.dllbin文件夹包含Library1.dll但是这个dll是在旧版本上编译的.我的新版本Library1.dll存储在一个私有路径中,我传递给Assembly.ReflectionOnlyLoadFrom函数实例化,因此GetTypes在加载的程序集上进一步使我能够进行数据转换.

但是ReflectionTypeLoadException当我试图Library1.dll从私人路径加载时我总是得到.

请帮帮忙!!! 任何帮助,将不胜感激.我真的被卡住了.

谢谢,AG

c# reflection remoting

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

"yield关键字"在迭代器块之外是否有用?

yield关键字的文档说:

yield关键字向编译器发出信号,表明它出现的方法是迭代器块.

yield在任何迭代器块之外使用关键字遇到过代码.这是否应被视为编程错误或是否正常?

编辑对不起忘了发表我的代码:

int yield = previousVal/actualVal;
return yield; // Should this be allowed!!!???
Run Code Online (Sandbox Code Playgroud)

谢谢.

.net c# yield-keyword

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

Durandal中的多级路由

我正在查看Durandal样本,试图了解路由的工作原理.

shell.js指定了这些路由:

{ route: ['', 'knockout-samples*details'], moduleId: 'ko/index', title: 'Details...', nav: true, hash: '#knockout-samples' },
{ route: 'view-composition',moduleId: 'viewComposition/index',  title: ...
Run Code Online (Sandbox Code Playgroud)

knockout-samples:

{ route: '', moduleId: 'helloWorld/index', title: 'Hello World', type: 'intro' },
{ route: 'helloWorld', moduleId: 'helloWorld/index', title: 'Hello World', type: intro', nav: true},
Run Code Online (Sandbox Code Playgroud)

我想要实现的是拥有另一个层次结构helloWorld.像这样的东西: 在此输入图像描述

我试过这个但没有运气:

{ route: '', moduleId: 'helloWorld/index', title: 'Hello World', type: 'intro' },
{ route: 'helloWorld*details', moduleId: 'helloWorld/index', title: 'Hello World',           type: 'intro',      nav: true, hash:'#knockout-samples/helloWorld'}
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.

Durandal路由不支持此级别的导航吗?

javascript knockout.js durandal

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

并排装配加载问题

我有一个简单的应用程序,通过这段代码在运行时从2个子文件夹加载两个程序集:

Assembly.Load("A, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
Assembly.Load("B, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
Run Code Online (Sandbox Code Playgroud)

目录结构是:
在此输入图像描述
因此预期的负载如下:

TheApp.exe -> A.dll -> C.dll (version 2.0.0.0)
           -> B.dll -> C.dll (version 1.0.0.0)
Run Code Online (Sandbox Code Playgroud)

请注意,C.dll已签名,因此两个版本应并排加载.

为确保应用程序从正确的位置加载程序集,我将以下内容添加到应用程序配置文件中:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="B;A" />
    </assemblyBinding>
  </runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)

问题是每当启动时应用程序都会崩溃并显示以下消息:

=== Pre-bind state information ===
LOG: User = ...
LOG: DisplayName = C, Version=2.0.0.0, Culture=neutral, PublicKeyToken=93a02044a09d059a
 (Fully-specified)
LOG: Appbase = file:///D:/Temp/TheApp/bin/Debug/Test/
LOG: Initial PrivatePath = NULL
Calling assembly : A, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind …
Run Code Online (Sandbox Code Playgroud)

.net c# reflection

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

EF Core - 多个上下文和事务

我们将大型 DbContext 拆分为较小的上下文,每个上下文负责一个小的域边界上下文。上下文保存操作由工作单元编排,如下所示。

该域有两个有界上下文:合作伙伴和员工。工作单元管理两个 DbContext,PartnerContext并且EmployeeContext. 我们在事务中运行所有保存操作以确保操作是原子的。

github上提供了该问题的简化版本

public class UnitOfWork {

  public Task SaveChanges(){
      // EmployeeContext begins a transaction and shares it with other contexts
      var strategy = employeeContext.Database.CreateExecutionStrategy();
      return strategy.ExecuteAsync(async () =>
      {
        await using var transaction = await employeeContext.Database.BeginTransactionAsync();
        await partnerContext.Database.UseTransactionAsync(transaction.GetDbTransaction());
        await partnerContext.SaveChangesAsync();
        await employeeContext.SaveChangesAsync();
        await transaction.CommitAsync();
      });
  }
}
Run Code Online (Sandbox Code Playgroud)

下面的代码工作正常。更改全部在一个事务中执行

   var unitOfWork = new unitOfWork();
   ... perform updates to both contexts
   await unitOfWork.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

但是,当尝试第二次保存更改时,以下代码会抛出异常。

   var unitOfWork = new unitOfWork();
   ... perform updates …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-core

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

Thread.holdsLock(锁定)的目的是什么?

我看到有人 assert !Thread.holdsLock(lock)用来避免死锁.

这是什么目的?如果锁定对象由另一个线程持有,那么断言会导致代码立即退出吗?

java multithreading

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

XML文档问题中的泛型

我试图在我的类XML文档中包含一个代码片段,但编译器抱怨xml元素没有关闭!这是我想要实现的目标

/// <summary>
/// Method documentation here...
/// </summary>
/// <remarks>
/// <para>
/// This class should be used as follow:
/// <br/>
/// ************** PROBLEM IN NEXT LINE ********************
/// <c> MyClass class = new MyClass<String>(); </c>
/// </para>
/// </remarks>
public class MyClass<T>{
....
}
Run Code Online (Sandbox Code Playgroud)

我试图替换代码片段 /// <c> MyClass class = new MyClass{String}(); </c>

以前有人经历过这个吗?

谢谢你的帮助

c# xml-documentation

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

识别显示

我正在尝试在多显示器设置中识别屏幕以保存链接到该屏幕的一些数据.重启后如何才能可靠地识别屏幕?

我知道Screen.Net 中的类,但Screen.DeviceName似乎没有始终指向一个屏幕(例如在安装新的图形驱动程序后).

.net c# multiple-monitors uniqueidentifier

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

运行Roslyn脚本时在运行时找不到程序集

我将基于Roslyn的脚本引擎嵌入到我的应用程序中,并开始面临一些问题.将引用加载到我的引擎时,我会执行以下操作

var engine = new Roslyn.Scripting.CSharp.ScriptEngine();
engine.AddReference("MyAssemblyLocation");
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 如果MyAssemblyLocation程序集引用其他程序集,我如何告诉Roslyn在不执行任何程序集的情况下加载它们engine.AddReference("MyAssemblyLocation");
  2. 应该运行脚本的主机应用程序已经加载了我想在脚本中使用的一些程序集,Roslyn是否有办法将自己挂钩到内存中已加载的dll而不加载新实例?
  3. 最后,有没有办法告诉Roslyn递归加载所有依赖项 MyAssemblyLocation

谢谢.

c# roslyn

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

Javascript foreach循环性能

我正在考虑改进每个循环的一些,并创建一个测试基准来比较我们使用它们的不同方式.测试可以在这里找到.

我很惊讶地发现这段代码:

function add(val) {
   sum += val;
}
values.forEach(add);
Run Code Online (Sandbox Code Playgroud)

比这个表现更好.

 values.forEach(function(val) {
   sum += val;
  });
Run Code Online (Sandbox Code Playgroud)

这些不一样吗?是什么让第一个代码段比第二个更快?

javascript performance-testing

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