小编Jef*_*eff的帖子

私有静态只读字段大写

帕斯卡或骆驼案?

我使用驼峰案例命名私有字段和私有静态字段.我用pascal case命名consts(如MS命名约定所示)(无论私有还是公共)....

那么私有静态readonly怎么样?逻辑说骆驼案例...但私有静态只读功能就像一个const ...对吗?

c# naming-conventions

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

Wix在卸载时不删除文件

我在这件事上看到了别人的问题,但我无法让它对我有用.我正在努力习惯Wix,所以我们可以迁移我们的vdproj(我觉得我们已经向前迈出了一步,又向后退了4步......最基本的东西已经变成了Wix完全不平凡......但我确实看到了为构建安装程序提供完全成熟的声明性标记的价值.

我在SharpDevelop的wixproj中有以下wxs.

安装工程.卸载不执行任何操作,并将安装文件夹和dll保留在原位.有什么问题?

Files.wxs:

<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="TARGETDIR">
            <Directory Id="ProgramFilesFolder" Name="PFiles">
                <Directory Id="INSTALLDIR" Name="Client">
                    <Component Id="InteropDll" Guid="AD09F8B9-80A0-46E6-9E36-9618E2023D66" DiskId="1">
                        <File Id="Interop.dll" Name="Interop.dll" Source="..\Interop\bin\$(var.Configuration)\Interop.dll" KeyPath="yes" />
                        <RemoveFile Id="RemoveInterop.dll" Name="Interop.dll" On="uninstall" />
                    </Component>
                </Directory>
            </Directory>
        </DirectoryRef>
    </Fragment>
</Wix>
Run Code Online (Sandbox Code Playgroud)

Setup.wxs:

<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*"
        Name="Client Setup"
        Language="1033"
        Version="1.0.0.0"
        UpgradeCode="4A88A3AD-7CB6-46FB-B2FD-F4EADE0218F8"
        Manufacturer="Client Setup">
        <Package Description="#Description"
            Comments="Comments"
            InstallerVersion="200"
            Compressed="yes"/>
        <!--
            Source media for the installation. 
            Specifies a single cab file to be embedded in the installer's .msi. 
        -->
        <Media Id="1" Cabinet="contents.cab" EmbedCab="yes" …
Run Code Online (Sandbox Code Playgroud)

windows-installer wix wix3.5

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

MSBuild UsingTask解析引用

我觉得我以前修过这个,但我记不起来了.

我有一个看起来像这样的任务文件(CustomTasks.tasks):

<UsingTask AssemblyFile="CustomTasks.dll" TaskName="MyCustomTask"/>
Run Code Online (Sandbox Code Playgroud)

它引用了一个程序集(即Ionic.Zip.dll).Ionic.Zip.dll不在GAC中(我不希望它).它就在我的CustomTasks.dll旁边.

我有一个名为MSBuild的目录,从我的sln文件向上一级,其中包含CustomTasks.tasks,CustomTasks.dll和Ionic.Zip.dll.

我有一个csproj引用任务文件并调用自定义任务:

<Import Project="$(ProjectDir)\..\MSBuild\CustomTasks.tasks" />

<MyCustomTask ..... />
Run Code Online (Sandbox Code Playgroud)

在构建时,这会产生:

无法从程序集加载"MyCustomTask"任务.... MyCustomTasks.dll.无法加载文件或程序集'Ionic.Zip,......'或其依赖项之一.

msbuild msbuild-task

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

在EF 4.0中将字符串转换为Int

有没有办法做到这一点?我在DB中有一个字符串字段,我想在我的LINQ查询中将其解析为一个int属性(是的,它必须在IQueryable级别,而不是在内存中).

我知道2年前EF 1.0无法做到这一点(即使LINQ to SQL支持开箱即用的这个基本功能)...但我只是想知道是否有人在这一点上提出了这样做的方法?

自定义函数映射?特殊语法?什么都没有....

更新:

我尝试了一个模型定义函数如下:

    <Function Name="ConvertToInt32" ReturnType="Edm.Int32">
      <Parameter Name="v" Type="Edm.String" />
      <DefiningExpression>
        CAST(v AS INT)
      </DefiningExpression>
    </Function>

    [EdmFunction("Model.Repository", "ConvertToInt32")]
    public static int ConvertToInt32(string value)
    {
        throw new InvalidOperationException("Only valid when used as part of a LINQ query.");
    }
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.我得到运行时异常:

        ErrorDescription=Type 'INT' could not be found. Make sure that the required schemas are loaded and that the namespaces are imported correctly.
        StackTrace:
             at System.Data.Common.EntitySql.SemanticAnalyzer.ConvertTypeName(Node typeName, SemanticResolver sr)
             at System.Data.Common.EntitySql.SemanticAnalyzer.ConvertTypeExprArgs(BuiltInExpr astBuiltInExpr, SemanticResolver sr)
             at System.Data.Common.EntitySql.SemanticAnalyzer.<CreateBuiltInExprConverter>b__73(BuiltInExpr bltInExpr, SemanticResolver sr) …
Run Code Online (Sandbox Code Playgroud)

linq linq-to-entities entity-framework entity-framework-4

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

JQuery After Body ASP .NET MVC 4

我刚刚创建了一个ASP .NET MVC 4 WebAPI项目.

在查看默认的_Layout.cshtml时,我看到在渲染正文(不在头部)之后插入了jquery脚本.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
    @Styles.Render("~/Content/themes/base/css", "~/Content/css")
    @Scripts.Render("~/bundles/modernizr")
</head>
<body>
    @RenderBody()

    @Scripts.Render("~/bundles/jquery")
    @RenderSection("scripts", required: false)
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这会导致错误

$ is not defined 
Run Code Online (Sandbox Code Playgroud)

当然,试着写

$(document).ready(function() {...}).
Run Code Online (Sandbox Code Playgroud)

移动

@Scripts.Render("~/bundles/jquery")
Run Code Online (Sandbox Code Playgroud)

进入_Layout.cshtml的head部分纠正问题,jquery按预期工作.

这是怎么回事?我做错了什么,并且_Layout.cshtml中的Script.Render的默认位置是有原因的吗?

asp.net-mvc jquery asp.net-mvc-4

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

AWS API通过ARN获取任何资源

我有一堆AWS资源ARN.我可以轻松地在ARN的命名空间上编写switch/case语句,并describeXYZ在正确的AWS API类上调用适当的方法来获取资源详细信息.但有没有办法获取任意ARN并获得它的描述?有点像aws.describeResource({arn:myArn}, callback)

amazon-web-services aws-sdk

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

多租户ASP .NET应用程序中的隔离

我正在构建一个多租户ASP .NET应用程序.鉴于每个租户可以动态配置他们的应用程序(可能涉及将动态自定义程序集加载到内存中),我需要一种隔离每个租户的方法.

出于维护原因,我不希望为每个租户创建一个新的Web应用程序.

我一直在考虑使用AppDomainManager为每个应用程序创建一个AppDomain,但似乎并不打算用于ASP .NET应用程序.

有没有人对这个问题有一些建议?

谢谢.

.net c# asp.net appdomain multi-tenant

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

针对Silverlight的Telerik与Infragistics

是的,这肯定是一个重复的问题,但我想得到一些新鲜的.

我的印象是Telerik是一个更完整的套件,但我真的被他们的控件的响应性所关闭.就响应性而言,它似乎"笨拙"(我有一台非常快的计算机和视频卡).滚动网格并转换块,即使在他们声称具有良好性能的最新演示中也是如此.我确实认为他们的WPF套件在API方面与他们的SL匹配.

Infragistics拥有更少的控件和更少的主题可能性,但他们的控件非常敏感.滚动网格是非常流畅的,它们的组合菜单和所有其他控件也是如此.

我检查了ComponentOne,他们的控件在上面提到的几点上看起来与Telerik类似,但是稍微不那么"漂亮".

这些套房的其他用户有什么想法吗?基本上,我正在寻找的是一个高性能和响应性的套件,从主题角度可以相对定制,并且具有足够的功能来开发LOB SL应用程序,而无需使用多个套件来满足大多数常见要求.

silverlight infragistics telerik

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

Castle Windsor瞬态一次性用品

我知道这已被讨论过了令人作呕......但我对Windsor跟踪Transient IDisposable对象的方式存在疑问.

我理解让Windsor管理我的IDiposables的好处......但我不喜欢它.

如果我想将我的组件包装在一个使用块中会发生什么?编码器会假设资源会在使用块结束时被清理掉,对吧?错误 - 将调用Dispose,但Windsor将保留实例直到明确释放.这对我来说一切都很好,因为我知道我在做什么......但是另一个编写类的开发人员想要使用IDisposable,通常使用其他IDisposable的方式 - 在一个使用块中呢?

using(factory.CreateInstance()) 
{
   ....  
}
Run Code Online (Sandbox Code Playgroud)

看起来比我更清楚:

MyDisposable instance;
try
{
    instance = factory.GetInstance();
}
finally 
{
    factory.Release(instance);
}
Run Code Online (Sandbox Code Playgroud)

为了真正处理我的实例并让它们符合GC的条件,我需要引用WindsorContainer或使用一个公开发布方法的类型工厂.这意味着使用IDisposable组件的唯一可接受的方法是使用类型化的工厂.在我看来,这并不好......如果有人将IDisposable接口添加到现有组件中会怎么样?每个需要注入组件的地方都需要改变.在我看来,这真的很糟糕.(当然,在非DI场景中,它还需要更改为调用Dispose ...但是对于Windsor,每个地方都需要更改以使用类型化工厂,这是一个更大的变化).

好的,公平的,我可以使用自定义的ReleasePolicy吗?这个怎么样?

public class CustomComponentsReleasePolicy : AllComponentsReleasePolicy
{
    public override void Track(object instance, Burden burden)
    {
        if (burden.Model.LifestyleType == LifestyleType.Pooled) 
            base.Track(instance, burden);
    }
}
Run Code Online (Sandbox Code Playgroud)

好的,很棒,我的IDisposable瞬态组件现在将是GC.

如果我想使用TypedFactory,那么我的类可以生成许多类型的实例,该怎么办?

public interface IMyFactory 
{
    MyDisposable GetInstance();
    void Release(MyDisposable instance);
}

[Singleton]
public class TestClass
{
    public TestClass(IMyFactory factory) { }
}
Run Code Online (Sandbox Code Playgroud)

好吧,对于一个,在工厂调用Release将无法在MyDisposable上调用Dispose(),因为MyDisposable没有被跟踪....

我怎样才能克服这些困难?

谢谢.

.net castle-windsor castle

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

强制Visual Studio重建嵌入式资源

我们有一个SQL文件,它是我们解决方案中的嵌入式资源.当sql文件发生更改并且我们单击debug时,如果没有更改实际的C#代码,则解决方案不会使用嵌入式资源重建项目.

我已经遇到过其他解决方案的这个问题,只要我记得,而且我个人知道要做Build Solution以确保它已经构建......但这已成为一些不记得的新开发人员的问题当他们对SQL文件的更改没有在调试时反映时,这样做并感到困惑...所以我想知道是否有人知道一个简单的修复.

c# msbuild visual-studio-2010

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