小编Luc*_*cas的帖子

程序化MSIL注入

假设我有一个像这样的错误应用程序:

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("2 + 1 = {0}", Add(2, 1));
        }

        static int Add(int x, int y)
        {
            return x + x; // <-- oops!
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该应用程序已经编译并部署到野外.有人找到了这个bug,现在他们要求修复它.虽然我可以使用修复程序重新部署此应用程序,但由于我无法控制的原因,这是一个极端的麻烦 - 我只是想为bug编写补丁.

具体来说,我想将自己的MSIL插入有问题的assmembly源文件中.我之前从未做过这样的事情,谷歌搜索没有发现任何有用的信息.如果我能在上面的代码中看到如何执行此操作的示例,它将极大地帮助我:)

如何以编程方式将我自己的MSIL注入已编译的.NET程序集中?

[编辑添加:]对于那些问:我不需要运行时hotswapping.对我来说完全没问题,关闭应用程序,操纵程序集,然后重新启动程序.

[编辑一次:]看起来普遍的共识是"操纵程序集是修补程序的一种方法".如果这是一个坏主意,我不会走那条路.

我将问题保持开放,因为MSIL注入可能仍然有用于其他目的:)

.net cil

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

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

如果已经有一个带有runat服务器属性的表单,为什么.NET会从页面中删除一个<form>标记?

它不会删除第二个表单标记内的所有内容,只是隐藏页面中的标记和标记

任何想法和解决方法?

asp.net webforms

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

LINQ to SQL并使用OR子句连接两个表

假设我有计划和文件

Dim myPlans = _context.Plans.Where(predicate1)
Dim myDocuments = _context.Documents.Where(predicate2)
Run Code Online (Sandbox Code Playgroud)

我使用PredicateBuilder为每个子句构造了where子句.因此,myPlans和myDocuments具有正确的SQL语句.

我想做的是将这两个表连接成一个linq语句.我遇到的问题是,默认情况下AND条件是加入where子句.

myPlans Where子句:( p.name喜欢"%test%"和p.name喜欢"%bed%")或(p.description喜欢"%test%"和p.description喜欢"%bed%")

myDocuments Where子句:( d.name喜欢"%test%"和d.name喜欢"%bed%")或(d.描述如"%test%"和d.description如"%bed%")

当我将两个结合起来时,期望的结果Where子句是:
Where(d.ID = p.ID)AND(上面的myplans where子句)OR(上面的mydocument where子句).意思是,我希望每个表中的两个where子句是"或"而不是"And".

当前结果where子句是:Where(d.ID = p.ID)AND(上面的myplans where子句)AND(上面的mydocument where子句).意思是,我希望每个表中的两个where子句是"或"而不是"And".

我正在形成这样的声明:

Dim test = From d in myDocuments _
           Join p in MyPlans on d.ID Equals p.ID _
           Select d.Name, p.Name
Run Code Online (Sandbox Code Playgroud)

linq vb.net where linq-to-sql

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

.NET垃圾收集器 - 它的线程优先级是什么?

我发现了一些很棒的文章(Maoni,Richter#1,Richter#2)给出了关于GC的理论和实践的许多细节,但我找不到任何说明如何设置GC线程优先级的内容.

我发现的最接近的是这个表明Finalizer线程"以异步方式运行到应用程序并且具有高优先级".

我一直以为它是一个"低优先级"的线程,但是阅读越来越多关于它似乎是错误的(因为GC必须阻止所有其他线程,并且你不希望你的应用程序依赖于一个低优先级的线程,以便及时恢复).

有谁知道确切知道实际的优先级应该是什么?

.net garbage-collection

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

NHibernate更新未更改的记录

当我更新(使用flush)从数据库中检索的记录列表中的一条记录时,nHibernate正在对原始列表中的所有记录进行版本控制.

从数据库中检索记录列表:

using(UnitOfWork.Start())
{
   queuedJobs = aJobServiceManager.GetAllJobs().Where(aJob => aJob.Status == PricingStatus.QUEUED).ToList();
}

/* Do some work on the record*/
using(UnitOfWork.Start())
{
   //aJob is a record from queuedJobs.
   aJobServiceManager.Save(aJob);
   //When Flush is called I'm expecting only aJob to be updated in the database.
   //aJob is correctly updated BUT
   //All the other records in queuedJobs are also updated (their version field is incremented).
   UnitOfWork.Current.Flush();
}
Run Code Online (Sandbox Code Playgroud)

为什么nHibernate在没有更改时更新所有记录,如何阻止此行为?

nhibernate

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

图像社交元标签 - property="og:image" name="twitter:image" itemprop="image"

当 URL 共享时,社交网络可以很好地从网站中提取标题和描述,但对于图像,仍然需要创建自定义元标记:property="og:image" name="twitter:image" itemprop="image". 我的问题是,这行得通吗?

<meta property="og:image" name="twitter:image" itemprop="image" content="http://example.com/image.jpg" />
Run Code Online (Sandbox Code Playgroud)

因此,我不必为网站上的每个网页创建 3 个不同的元标记。

html microdata schema.org facebook-opengraph twitter-card

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

如何导入网络程序集

我下载了zlib.NET,我必须导入一个文件,名为"zlib.net.dll".

我的问题是:如何导入该文件,以便在C#Express 2008中使用它,如"System.zlib.etc"?

谢谢.

c# import .net-assembly .net-3.5

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

只是日期或时间

我是在想 ..

我有这样的对象

public class Entry{

public DateTime? Date { get; set;} // This is just Date

public DateTime? StartTime { get; set; } //This is just Time

public TimeSpan Duration { get; set; } //Time spent on entry

}
Run Code Online (Sandbox Code Playgroud)

是否有比DateTime更合适的类型或更好的策略来处理时间和日期?没有必须在我的所有开始和结束时间添加DateTime.MinDate()的痛苦?

---更新---

1 - 我希望能够在Entry对象上请求Date或StartTime是否为Null.

2 - 输入应允许用户输入持续时间而不指示日期.即使像DateTime.MinDate()这样的默认日期也似乎是一个糟糕的设计.(这就是为什么我选择TimeSpan而不是Start和EndTime)

c# time datetime date

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

ASP.NET MVC3 - 如果VB中的语句

Fredrik的博客文章中,他有一个C#if语句的例子

@if (WebSecurity.IsAuthenticated) {
    <li><a href="/user/login">Log in</a></li>
} else {
    <li><a href="/user/logout">Log out</a></li>
}
Run Code Online (Sandbox Code Playgroud)

但在VB中我似乎无法弄清楚如何做同样的事情

@If (HttpContext.Current.User.Identity.IsAuthenticated) Then
<div id="dialog-confirm" title="Log Out">
    <div class="alert" title="Alert">
    </div>
    Are you sure?</div>
End If
Run Code Online (Sandbox Code Playgroud)

这个节目表明我的内部HTML标记是错误的.

基本上以下是有效的

@If (HttpContext.Current.User.Identity.IsAuthenticated) Then 

End If
Run Code Online (Sandbox Code Playgroud)

但if语句中的任何内容都被视为"代码"而不是"标记".我需要的是能够将标记放在那里.

有谁知道如何在Razor VB中做一个正确的if语句?

vb.net if-statement razor asp.net-mvc-3

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

简化我的C#Linq声明?

课程:

class Foo
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

名单

List<Foo> lst = new List<Foo>();
Run Code Online (Sandbox Code Playgroud)

数据表:

 DataTable dt = GetFromDb ()....
Run Code Online (Sandbox Code Playgroud)

我想填写lst来自的记录dt.

我做过:

Array.ForEach(dt.AsEnumerable().ToArray(), y = > lst.Add(new Foo()
{
    Id = int.Parse(y["id"].ToString()), Name = y["name"].ToString()
}));
Run Code Online (Sandbox Code Playgroud)

题 :

  1. 我不能做别的事 dt.AsEnumerable().Select(_ => fill lst )吗?

知道选择签名的一部分(在这种情况下)是Func<datarow,void>不会编译的

但是,除了我的丑陋方式之外,还有其他办法吗?

c# linq linq-to-dataset

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

EFT CTP5在插入时禁用标识列

我有一个现有的数据库,我想迁移到EF CTP5.我遇到的问题是,当我插入现有数据时,我需要它移动保留当前身份主键以用于其他外键约束.

我想使用EF CTP5代码进行迁移,因此我不必编写大量SQL,甚至不必在SSIS包中包含它.

我试图使用sql语法:

SET IDENTITY_INSERT tableName ON

SET IDENTITY_INSERT tableName OFF

但是,当调用DbContext.SaveChanges()时,上述语法在不同的连接中发生,并且标识列由EF CTP5框架控制,即使在指定ID时也是如此.

是否有一种方法可以禁用或删除与以下类似的对象的身份约定,但是在运行时而不是在实例化数据库时:

public class BlogContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<StoreGeneratedIdentityKeyConvention>();
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

entity-framework-ctp5

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