小编Jon*_*Jon的帖子

.NET HashTable与字典 - 字典能否同样快?

我想弄清楚何时以及为什么要使用Dictionary或HashTable.我在这里做了一些搜索,发现有人在谈论字典的一般优点,我完全赞同,这导致拳击和拆箱优势,以获得轻微的性能提升.

但是我也读过字典并不总是按照它们插入的顺序返回对象,它被排序的东西.作为HashTable的地方.据我了解,这导致HashTable在某些情况下更快.

我的问题是,这些情况可能是什么?我上面的假设我错了吗?你可以用什么情况来选择一个在另一个之上,(是的,最后一个有点含糊不清).

.net c# collections dictionary hashtable

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

在Windows中跨本地文件系统的GIT克隆repo

在谈到GIT时,我是一个完整的Noob.过去几天我一直在迈出第一步.我在我的笔记本电脑上设置了一个repo,从一个SVN项目中拉下了Trunk(有一些分支问题,没有让它们工作),但一切似乎都没问题.

我现在希望能够从笔记本电脑拉到或推送到我的主桌面.原因是笔记本电脑在火车上很方便,因为我每天花2个小时旅行,可以完成一些好的工作.但我家里的主机非常适合开发.因此,当我回到家时,我希望能够从笔记本电脑推/拉到主计算机.我认为最简单的方法是让局域网中的代码文件夹共享,并执行:

git clone file://192.168.10.51/code
Run Code Online (Sandbox Code Playgroud)

不幸的是,这似乎对我不起作用:

所以我打开一个git bash cmd并输入上面的命令,我在C:\ code(两台机器的共享文件夹)这是我得到的:

Initialized empty Git repository in C:/code/code/.git/
fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

如何以最简单的方式在两台机器之间共享存储库.

将有其他位置将是官方存储点和其他开发人员和CI服务器等将从中拉出的位置,这样我就可以在两台计算机上处​​理相同的存储库.

根据塞巴斯蒂安的建议,我得到以下内容:

C:\code>git clone --no-hardlinks file://192.168.10.51/code
Initialized empty Git repository in C:/code/code/.git/
fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

**编辑 - 答案**

感谢所有帮助.我尝试映射一个驱动器,这工作所以我想回去重试没有映射.最终结果是:

git clone file://\\\\192.168.0.51\code
Run Code Online (Sandbox Code Playgroud)

这很有效.

谢谢

windows git git-clone

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

CSS设置宽度以填充剩余区域的%

对不起有点垃圾的标题.我想不出如何更好地描述这个.

我正在尝试在我的网站上实施Google Friend Connect会员小工具(刚刚进入该计划并希望在没有重大重新设计的情况下将其放入,至少为了测试而起).

我的问题如下:

我有一个容器div,其宽度为主页面(正文)的90%.在这里我向右浮动div并将其宽度设置为300px并将google小工具放入其中.我想要的是能够在谷歌小工具div的左侧剩余95%的空间填充.

我不知道是否可以将px和%与div和width混合.

我希望这是有道理的.

谢谢

css

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

MVC5(VS2012)标识CreateIdentityAsync - 值不能为null

我正在尝试为MVC5站点设置OAuth(在VS2012中).

我正在使用Fluent NHibernate.我已经设置了自己的Userstore并传入一个存储库对象来访问NHibernate会话对象.我将我的商店传递给默认的aspnet usermanager提供程序.这最终适用于本地注册和登录.我不是要设置连接/注册Facebook.

它获得了一个成功的帐户.在用户表中添加用户,在登录表中添加记录然后爆炸.我没有在用户存储中实现声明,或者在用户对象中放置声明集合.(不确定这是否真的需要,我正在剥离所有可能出错的东西以找到问题的根源).

爆炸的线是(在账户控制器中):

var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);            
Run Code Online (Sandbox Code Playgroud)

在这种方法中:

private async Task SignInAsync(IdentityUser user, bool isPersistent)
Run Code Online (Sandbox Code Playgroud)

这是堆栈跟踪的结束

[ArgumentNullException: Value cannot be null.
Parameter name: value]
   System.Security.Claims.Claim..ctor(String type, String value, String valueType, String issuer, String originalIssuer, ClaimsIdentity subject, String propertyKey, String propertyValue) +14108789
   System.Security.Claims.Claim..ctor(String type, String value, String valueType) +62
   Microsoft.AspNet.Identity.<CreateAsync>d__0.MoveNext() +481
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +144
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +84
   System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +49
   Web.Controllers.<SignInAsync>d__42.MoveNext() in d:\Google Drive\Development\GoalManagement\Web\Controllers\AccountController.cs:375
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +144
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +84
   Web.Controllers.<ExternalLoginConfirmation>d__35.MoveNext() in d:\Google Drive\Development\GoalManagement\Web\Controllers\AccountController.cs:311
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +144 …
Run Code Online (Sandbox Code Playgroud)

asp.net identity claims-based-identity asp.net-mvc-5 asp.net-identity

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

C#从get中返回一个只读变量; 组;

我发誓我已经看到了这个例子,但谷歌搜索了一下,找不到它.

我有一个类,它有一个对象的引用,需要有一个GET; 它的方法.我的问题是我不希望任何人能够摆弄它,即我希望他们得到它的只读版本(注意我需要能够在我的班级内改变它).

谢谢

c# properties readonly

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

C# - 如何以编程方式添加Excel工作表 - Office XP/2003

我刚刚开始通过C#调整Excel,以便能够自动创建,并添加到Excel文件中.

我可以打开文件并更新其数据并浏览现有的工作表.我的问题是如何添加新表?

我试过了:

Excel.Worksheet newWorksheet;
newWorksheet = (Excel.Worksheet)excelApp.ThisWorkbook.Worksheets.Add(
                Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Run Code Online (Sandbox Code Playgroud)

但我得到COM异常,我的谷歌搜索没有给我任何答案.

来自HRESULT的异常:0x800A03EC来源是:"Interop.Excel"

我希望有人能够让我摆脱困境.

c# com excel worksheet office-interop

23
推荐指数
2
解决办法
10万
查看次数

在Windows上使用git-http-backend.exe设置Git服务器

我正在使用Apache和git-http-backend.exe在WS 2008机器上设置Git服务器(1.7.2.3).我一直在关注一个良好的啧啧这里.我有GUI工作,我可以惹恼克隆,如果我把以下内容放在回购配置中我可以惹恼:

[http]
 receivepack = true
Run Code Online (Sandbox Code Playgroud)

我已将以下内容添加到httpd.conf文件中:

SetEnv GIT_PROJECT_ROOT C:/GIT/Repositories
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAliasMatch \
        "(?x)^/(.*/(HEAD | \
                    info/refs | \
                    objects/(info/[^/]+ | \
                             [0-9a-f]{2}/[0-9a-f]{38} | \
                             pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
                    git-(upload|receive)-pack))$" \
                    "C:/Program Files (x86)/git/libexec/git-core/git-http-backend.exe/$1"

<Directory />
  Allow from all
</Directory>

<LocationMatch "^/git/.*/git-receive-pack$">
        AuthType Basic
        AuthName "Git Access"
  AuthUserFile C:/GIT/ApacheConfig/users
  AuthGroupFile  C:/GIT/ApacheConfig/groups
        Require group repogeneral        
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)

当我添加"LocationMatch"时,我仍然可以克隆,或者通过在URL中指定一个名称,git clone http://jon@myserver.com

它会提示输入密码并进行克隆.

但当我试图回到回购时,我得到以下内容:

错误:无法访问URL http://jon@myserver.com/newtestrepo.git/,返回代码22致命:git-http-push failed

我一直在查看http-backend.exe手册页中的示例,但无法让它们工作.

这是我的群组文件,(这只是测试示例,所以没有任何可用于prod):

admin: jon steve admin
webview: jon steve web
repogeneral: jon …
Run Code Online (Sandbox Code Playgroud)

git apache2 git-http-backend

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

C#在运行时将两个对象合并在一起

我有一种情况,我从Excel加载一个非常不规范的记录集.我拉入每一行并一次创建一个对象.每行可以包含公司和/或客户.

我的问题是多行可能有相同的对象,所以我可能已经创建了它.我做了一个比较,看看它是否已经在列表中.如果是这样,我需要合并这两个对象,以确保我没有从第二行获得任何新信息.

所以:

company   - client   - address   - phone
----------------------------------------
mycompany -          - myaddress - 
mycompnay - myclient -           - myphone
Run Code Online (Sandbox Code Playgroud)

所以第一行会创建一个地址为"myaddress"的公司对象.第二行将创建另一个公司对象(根据我的规则是与公司名称相同的公司),这也有客户参考和电话号码.

所以我知道它们是相同的,但需要确保所有数据合并到一个对象中.

目前我正在创建一个实用程序类,它接受两个对象(一个是主要的,另一个是合并的,所以如果存在冲突,则一个具有优先级),它会遍历每个变量并分配值(如果有的话) .这是一个沉重的锅炉板,我希望可能有一些实用工具,我可以用来为我做手工工作.

这个例子已经简化,因为有一些其他变量,一些基本类型和其他更复杂的项目.

c#

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

将额外文件添加到已发布的MVC API项目中

我正在尝试向发布过程添加额外的XML文件.我有一个MVC API项目,它还有另一个控制器项目(V1.0).我们使用自我文档帮助功能,为每个项目创建.XML文件.在本地计算机上构建时,一切正常,但在发布时(使用向导),它将不包含此文件.

我一直在尝试更新发布配置文件(.pubxml)文件,如下所述:

http://www.asp.net/mvc/tutorials/deployment/visual-studio-web-deployment/deploying-extra-files

但没有成功.我可以看到以下情况发生:

  • 我干净,以确保没有任何东西闲逛.
  • 我用向导发布
  • 我可以在apiproject\bin \中找到所有文件,包括apiprojectv1 xml和dll文件
  • 我可以在apiproject\obj\x86\Release\AspnetCompileMerge\Source\bin中看到它有apiprojectv1 dll而不是xml文件
  • 我可以在apiprojet\obj\x86\Release\AspnetCompileMerge\TempBuildDir\bin中看到与上面相同的内容
  • 我可以在apiproject\obj\x86\Release\Package\PackageTmp\bin中看到与上面相同的内容

我不确定为什么文件没有被复制.这是我的完整pubxml文件:

<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize     the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit     http://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0"     xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <SiteUrlToLaunchAfterPublish />
    <publishUrl>\\myserver\wwwroot\apiproject</publishUrl>
    <DeleteExistingFiles>False</DeleteExistingFiles>
  </PropertyGroup>
  <Target Name="CustomCollectFiles">
        <ItemGroup>
          <_CustomFiles Include="..\bin\apiprojectv1.XML" />
          <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
            <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)    </DestinationRelativePath>
          </FilesForPackagingFromProject>
        </ItemGroup>
  </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

编辑 …

c# msbuild asp.net-mvc publishing

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

比较两个DataTables以确定一个而不是另一个的行

我有两个DataTable,A并且B是从CSV文件生成的.我需要能够检查哪些行B不存在A.

有没有办法进行某种查询来显示不同的行,还是我必须遍历每个DataTable上的每一行来检查它们是否相同?如果表格变大,后一种选择似乎非常密集.

c# datatable

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