小编Luk*_*oid的帖子

在Visual Studio中禁用Shift +删除剪切

我输入快.通常在编程的时候我会用Shift+ 选择一行,End然后按下delete键,但是这样做很快,我的手指没有脱离shift键.这导致使用所选内容替换剪贴板项.

这很糟糕,因为很多时候我在粘贴其他代码之前删除代码.

显然shift+ del是一种古老的学校切割方式.

我知道在视觉工作室中通过剪贴板历史记录循环ctrl+ shift+ v,但这仍然非常烦人.

有没有办法在Visual Studio或Windows中禁用此快捷方式?

keyboard-shortcuts visual-studio

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

如何禁用写入T4生成输出文件的#line指令

我的T4代码生成遇到了一个小问题.

我已将我的T4模板分解为单独的文件并将它们放在各种目录中,我已经这样做了,因此我的代码生成的一部分可以在多个项目中重复使用,例如模型生成,存储库生成和服务生成都包括核心EntityGeneration .tt文件.

不幸的是,当TextTemplating解析我的嵌套包含时,它会在其生成的.cs文件中构建一个长的#line预处理器指令,将所有相对路径组合到最低级别的包含文件.

不幸的是,由于这条路径是用相对路径构建的,所以它最终会不必要地长,实际上它超过了最大路径长度(Windows 7).

如果您感兴趣,以下是生成代码的错误行:

#line 3 "C:\VS2010\AlbatrossTravelGroup\ASC\AlbatrossTravelGroup.ASC.BusinessRules\Services\Contracts\..\..\..\..\AlbatrossTravelGroup.BusinessRules\Services\Contracts\..\..\..\AlbatrossTravelGroup.Models\Repositories\Contracts\..\..\../AlbatrossTravelGroup.Common/CodeGeneration.tt"
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何禁用这些指令写入生成的代码文件?如果不这样做,如何在不更改文件结构的情况下避免此问题?

c# t4 path c-preprocessor

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

UnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xe7:序号不在范围内(128)

我在utf-8编码字符时遇到了麻烦.我正在使用Django,当我尝试发送带有非纯文本的Android通知时,我收到此错误.我试图找到错误来源的位置,我设法弄清楚错误的来源不在我的项目中.

在python shell中,我键入:

'ç'.encode('utf8')
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

我得到同样的错误:

'á'.encode('utf-8')
unicode('ç')
'ç'.encode('utf-8','ignore')
Run Code Online (Sandbox Code Playgroud)

我也遇到了smart_text,force_text和smart_bytes的错误.

这是Python,我的操作系统还是其他问题?

我在Red Hat版本4.4.7-3上运行Python 2.6.6

python django encoding redhat utf-8

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

取消SemaphoreSlim.WaitAsync保持信号量锁定

在我们的一个课程中,我们大量使用SemaphoreSlim.WaitAsync(CancellationToken)和取消它.

在调用WaitAsync之后不久取消挂起的调用时,我似乎遇到了问题SemaphoreSlim.Release()(很快,我的意思是在ThreadPool有机会处理排队的项目之前),它将信号量置于没有进一步锁定的状态被收购.

由于的是否非确定性性质ThreadPool项目的通话之间执行以Release()Cancel(),下面的例子并不总是表现出的问题,这种情况下,我已经明确表示要忽略运行.

这是我试图证明问题的例子:

void Main()
{
    for(var i = 0; i < 100000; ++i)
        Task.Run(new Func<Task>(SemaphoreSlimWaitAsyncCancellationBug)).Wait();
}

private static async Task SemaphoreSlimWaitAsyncCancellationBug()
{
    // Only allow one thread at a time
    using (var semaphore = new SemaphoreSlim(1, 1))
    {
        // Block any waits
        semaphore.Wait();

        using(var cts1 = new CancellationTokenSource())
        {
            var wait2 = semaphore.WaitAsync(cts1.Token);
            Debug.Assert(!wait2.IsCompleted, "Should be blocked by the existing wait");

            // Release the …
Run Code Online (Sandbox Code Playgroud)

c# semaphore base-class-library async-await .net-4.5

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

关于参数的PureAttribute的目的

我理解PureAttribute用于标记某些东西(类,方法,委托等)没有可见的变化,但我可以从以下定义中看出它可以应用于方法参数:

[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Constructor|AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Event|AttributeTargets.Parameter|AttributeTargets.Delegate, AllowMultiple = false, Inherited = true)]
public sealed class PureAttribute : Attribute
Run Code Online (Sandbox Code Playgroud)

应用于参数的此属性的用途是什么,如下所示:

public void SomeMethod([Pure]SomeClass theParameter)
{
}
Run Code Online (Sandbox Code Playgroud)

是否暗示不SomeMethod应该使用theParameter未标记为的任何内容,这[Pure]意味着我们可以确保SomeClass在调用之前和之后看起来相同的实例是相同的SomeMethod

我没有看到PureAttribute这种方式的使用,并想知道这是由于代码合同缺乏支持还是因为对我的误解?

c# .net-4.0 code-contracts

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

RabbitMQ与.NET中的Unity IOC容器

我使用Unity App Block作为我的WOC项目服务层的IOC容器.使用Unity.WCF库将其插入每个WCF服务时,这非常有效.

我最近将RabbitMQ引入了我的服务层,我目前正在使用"使用"块来连接并添加到队列中.我不喜欢这个,我想用它HierachicalLifetimeManager来创建和销毁我与RabbitMQ的连接,因为我需要它们?这听起来不错吗?

我正在寻找一个这样的样本,或者至少是关于最佳方法的一些指导?(例如,我是否应该封装连接并根据需要注入每个服务?我将如何封装RabbitMQ使用者等?)

.net unity-container rabbitmq

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

为什么使用ttinclude而不是编译的程序集?

我一直在编写一个程序集来简化我的POCO类型生成.我有一个核心程序集,其中包含多个tt文件并用于生成代码.

我这样做的原因是因为无论我尝试哪种扩展(Devart T4,Tangible-T4或Visual T4)都没有Visual Studio的C#编辑器提供的智能感知和支持,所以在纯C#编写代码生成改进了经验很多.

我现在面临的最大问题是,实体框架辅助类(如事实Accessibility,CodeGenerationTools,MetadataTools等)是一个ttinclude文件,而不是一个组件内定义; 目前我不得不重写这些类提供的许多功能,以便可以从程序集中使用它.

我的问题是,为什么实体框架团队决定使用ttinclude文件而不是某些已编译的程序集?使用程序集方法似乎在更多情况下会更加可用,并且仍然不会影响T4代码生成(而不是使用<#@ include #><#@ assembly #>).

我想知道解决这个问题的最佳方法是什么,我已经考虑EF.Utility.CS.ttincludeTextTransform.exe,然后采用生成的C#并编译它,这是可取的吗?

谢谢,卢克

更新

目前我所做的是添加EF.Utility.CS.ttinclude到我的项目,将文件上的自定义工具设置为TextTemplatingFilePreprocessor.这将生成包含类的代码.然后我复制了这个cs文件,删除了负责编写输出的类(它有方法TransformText())并编译成程序集.我现在可以在程序集中使用实体框架实用程序类.

c# t4 entity-framework tangible-t4-editor clarius-visual-t4

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

Unity - 如何在nullable int的构造函数参数中传递null

我有一个以nullable int为参数的类.

public class Test
{
    public Test(int? p)
    {
        // ......
    }

    // ......
}
Run Code Online (Sandbox Code Playgroud)

如何使用unity解析它(将null作为参数传递)?

myContainer.RegisterType<Test>(new InjectionConstructor(10));
Run Code Online (Sandbox Code Playgroud)

这可以传递10作为值,但如果我传递null,它会抛出异常.

unity-container

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

Prism中的共享接口应该放在哪里?

我理解这可以解释为一个意见问题,但它是技术问题,我目前正在努力解决这个问题.

在Prism文档中,声明模块应该具有松散耦合而没有直接引用,只能通过共享接口.如下图所示:

模块依赖

我的问题是,如果只需要一些模块IOrdersRepository,那么基础设施就是错误的地方,因为它包含所有模块的共享代码.如果我将接口放在另一个模块中,那么两个模块都需要直接引用该模块,从而打破松耦合.

我应该简单地创建一个包含此接口的库,而不是遵循模块模式吗?

谢谢,卢克

c# prism

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