小编Pra*_*eek的帖子

程序集锁定规则和何时是卷影副本有用吗?

从我到目前为止的理解,通过阅读这篇文档,例如:http://msdn.microsoft.com/en-us/library/ms404279.aspx,卷影复制是一项功能,允许使用的组件,而目前由应用程序加载.

从上面的doc:

公共语言运行库在加载程序集时锁定程序集文件,因此在卸载程序集之前无法更新该文件.从应用程序域卸载程序集的唯一方法是卸载应用程序域,因此在正常情况下,在卸载所有正在使用它的应用程序域之前,无法在磁盘上更新程序集.将应用程序域配置为卷影复制文件时,应用程序路径中的程序集将复制到另一个位置并从该位置加载.副本已锁定,但原始程序集文件已解锁并可以更新.

但似乎有时加载的程序集没有被锁定,因此Shadow副本没用.

为了说明这一点,我使用以下代码创建了一个简单的库A.dll:

using System;

public class A
{
 public A()
 {
  Console.WriteLine("A");
 }
}
Run Code Online (Sandbox Code Playgroud)

然后我将其加载到AppDomain中,代码如下:

using System;
using System.Reflection;

class Test
{
 static void Main()
 {
  AppDomainSetup configuration = new AppDomainSetup
  {
   ShadowCopyFiles = "false"
  };

  AppDomain appDomain = AppDomain.CreateDomain("", null, configuration);

  Console.WriteLine(appDomain.ShadowCopyFiles);

  Assembly assembly = appDomain.Load("A");
  assembly.CreateInstance("A");

  Console.ReadLine();

  assembly.CreateInstance("A");
 }
}
Run Code Online (Sandbox Code Playgroud)

所以我期望当程序挂在ReadLine上时,我不应该使用A.dll程序集,但它似乎根本没有锁定:我甚至可以删除它!

所以这是我的问题:

1)为什么在此示例中加载的组件未锁定?

2)何时装配锁定,即阴影复制是否有用?

在此先感谢您的帮助.

.net clr assemblies shadow-copy appdomain

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

我想序列化和反序列化ArrayList <Employee>,但我一直在收到警告?

我想序列化和反序列化ArrayEmployees流入和流出的文件.

我在编译和运行时不断收到类型安全警告.

有没有比我这样做更好的方法来做到这一点.我希望能够将该条目写入ArrayList序列化文件,然后将其发送给某人并让他们能够对其进行反序列化.

问题:如何摆脱未经检查类型安全的代码?

警告:

Type safety: Unchecked cast from Object to ArrayList<Employee>
Run Code Online (Sandbox Code Playgroud)

码:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

public class TestSer implements java.io.Serializable {
    private static final long serialVersionUID = 1L;
    ArrayList<Employee> eee = new ArrayList<Employee>();
    ArrayList<Employee> newEmp = new ArrayList<Employee>();

    private void readSerFile() {

          try
          {
             FileInputStream fileIn = new FileInputStream("C:\\Users\\itpr13266\\Desktop\\test.ser");
             ObjectInputStream in = new ObjectInputStream(fileIn);
             newEmp = (ArrayList<Employee>) in.readObject();
             in.close();
             fileIn.close();
          } catch(IOException i) …
Run Code Online (Sandbox Code Playgroud)

java io serialization file

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

单击后如何延迟Bootstrap 3模式的显示

我试图在用户点击触发按钮后延迟显示Bootstrap模式:

<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
  Launch demo modal
</button>
Run Code Online (Sandbox Code Playgroud)

看看Bootstrap 3文档,我可以看到有一个show事件可以挂钩,但我不确定如何在模式出现在屏幕上之前引入3秒延迟.希望有人能帮忙吗?

参考:http: //getbootstrap.com/javascript/#modals

javascript jquery twitter-bootstrap twitter-bootstrap-3

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

使用两个不同的作业构建和运行单元测试

我有一个基本设置:存储在GitHub中的一些源文件,由Jenkins作业提取和构建.

现在我想在构建完成后自动运行单元测试(如果它可以帮助我使用NUnit).

我可以在"构建"作业中添加另一个构建步骤来运行nunit-console但是我想将构建任务与单元测试任务分开,这样在Jenkins仪表板中我可以直接看到坏了什么:构建或"仅"测试.

我可以创建另一个工作来拉取代码源,但它会复制第一个工作.

直接在第一个作业生成的二进制文件上运行单元测试的最简单方法是什么(在同一个工作区中运行第二个作业?复制二进制文件?...)?

感谢您的任何意见.

nunit nunit-console jenkins jenkins-plugins

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

在项目之间共享图像等资产的最佳方式

我想在多个 WinRT 项目之间共享一些资产,例如图标。

对于 WPF,这很容易(几乎):

  • 为资产创建一个库项目
  • 将资产标记为资源以将它们嵌入到生成的程序集中
  • 从其他项目中引用资产项目
  • 使用有点奇怪的“ pack ”URI格式引用 XAML 代码中的图标。

与 Windows 运行时共享它们的最佳方式是什么?

有没有这样的资源嵌入和共享能力,或者其他解决方案?

如果没有,我想我可以使用“复制为链接”将它们添加到每个项目中,但我希望有一种干净的方法。

编辑:我已经开始像在 WPF 项目中一样天真地这样做:

  • 我创建了一个新的库项目“资产”并将其中的图像添加为“内容”
  • 我从我的主项目中引用了这个项目

但我无法使用新的 URI 格式引用图像:

<Image Source="ms-resource://Assets/Files/Mushroom.png"></Image>
Run Code Online (Sandbox Code Playgroud)

c# xaml windows-runtime winrt-xaml

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

为什么要注册COM接口?

我已经使用COM几年了,但我一直在学习新的(和奇怪的)东西。

最近我意识到,COM接口不必为了实现它们的组件而在注册表中注册

在分析了工作站的注册表后,得出了这个结论,在该工作站中,COM DLL(在.Net / C#中实现)已.reg通过RegAsm用户不是管理员创建的文件注册了。并且RegAsm只为COM类而不是接口生成注册表项。

如果是这样,我的猜测是接口对于早期绑定很重要,并且仅在TLB文件中存在。相反,注册实现(类)是必不可少的,因为它们由文件系统上需要引用的物理代码支持。

1)那么我会发疯,丢失某些东西还是忽略接口吗?

2)如果可以忽略它们,后果是什么?

.net c# com vba interface

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

如何在lift项目中使用dispatch.json

我很困惑如何在调度和提升中组合json库来解析我的json响应.

我显然是斯卡拉新手.

我写了这段代码:

val status = {
  val httpPackage = http(Status(screenName).timeline)
  val json1 = httpPackage
  json1
} 
Run Code Online (Sandbox Code Playgroud)

现在我被困在如何解析twitter json响应

我试过使用JsonParser:

val status1 = JsonParser.parse(status) 
Run Code Online (Sandbox Code Playgroud)

但得到了这个错误:

<console>:38: error: overloaded method value parse with alternatives: 
(s: java.io.Reader)net.liftweb.json.JsonAST.JValue<and> 
(s: String)net.liftweb.json.JsonAST.JValue 
cannot be applied to (http.HttpPackage[List[dispatch.json.JsObject]]) 
   val status1 = JsonParser.parse(status1) 
Run Code Online (Sandbox Code Playgroud)

我不确定,无法弄清楚接下来要做什么,以便迭代数据,提取它并将其呈现到我的网页.

scala lift scala-dispatch

4
推荐指数
2
解决办法
1784
查看次数

HTML元素的循环布局

在HTML页面中,我想以循环方式布局元素列表.

所以我想知道是否有一种简单的方法可以用HTML5/CSS3做到这一点; 如果jQuery/jQuery UI或任何其他JavaScript库的插件管理这种布局.

在此先感谢您的帮助.

编辑:

截至目前,我已经使用了jQuery Radmenu:http://www.tikku.com/jquery-radmenu-plugin ; 但它的内在工作有点笨拙.

我最终可能会得到一个受dzejkej代码示例启发的自定义解决方案.

html javascript css jquery layout

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

阻止CSV文件的EOL规范化

我有一个源代码存储库,可以在WindowsLinux上使用.

我知道Git会自动将EOL转换为本地标准:Windows上的\ r \n和Linux 上的\n.

这不是源文件的问题.

但我有一些CSV文件使用固定格式和给定的EOL字符(\ r \n),不应该更改,但Git也会转换它们,破坏了一些代码.

我试图通过在.gitignore文件旁边的根目录创建一个.gitattributes文件来阻止CSV文件的EOL转换,其中包含以下内容:

*.csv    -text
Run Code Online (Sandbox Code Playgroud)

我已经应用了我所理解的内容:http://git-scm.com/docs/gitattributes

但是Git仍然在Linux上将\ r \n转换为\n.

我应该使用auto.crlf等其他设置吗?

请注意,我对Linux本地存储库的控制有限,因为它由持续集成服务器Jenkins管理.

感谢您的任何意见.

git github eol end-of-line

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

.Net简单正则表达式二次复杂度

在构建一个简单的正则表达式时,我发现它在输入大小增加的情况下具有相当奇怪的性能

这是另一个具有类似行为的真正正则表达式:

a+b
Run Code Online (Sandbox Code Playgroud)

我已经用一个简单的基准分析了它:

Regex regex = new Regex("a+b", RegexOptions.Compiled);

const int maxInputSize = 100;
const int n = 1000;

string input = "";
Stopwatch stopwatch = new Stopwatch();
for (int inputSize = 1; inputSize <= maxInputSize; ++inputSize)
{
    input += 'a';

    stopwatch.Restart();
    for (int i = 0; i < n; ++i)
    {
        regex.Match(input);
    }
    stopwatch.Stop();

    Console.WriteLine(stopwatch.Elapsed.Ticks);
}
Run Code Online (Sandbox Code Playgroud)

它在字符串“ a”,“ aa”,“ aaa”,...上运行正则表达式,并测量字符串的每个长度进行n次匹配所花费的时间。

我知道回溯问题(例如,如果regex是类似的东西(a+a+)+b),但是在这种情况下,即使考虑回溯,我也期望线性复杂度

例如,如果我们要匹配n次“ a”,这是我天真的期望的工作流程:

take first 'a'
take second …
Run Code Online (Sandbox Code Playgroud)

.net c# regex backtracking time-complexity

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