Tag: C#的

如何重命名entity framework5代码首先迁移数据库列而不丢失数据?

我得到了默认的ASP.NET MVC 4模板,并成功运行EF 5.0 Code First Migrations。 但是,当我更新模型属性名称时,相应的表列数据由EF 5.0删除。 是否有可能以自动的方式重命名表列而不丢弃数据?

为什么没有成员variables的C ++类占用空间?

我发现MSVC和GCC编译器为每个类实例分配至less一个字节,即使这个类是一个没有成员variables的谓词(或者只有静态成员variables)。 以下代码说明了这一点。 #include <iostream> class A { public: bool operator()(int x) const { return x>0; } }; class B { public: static int v; static bool check(int x) { return x>0; } }; int B::v = 0; void test() { A a; B b; std::cout << "sizeof(A)=" << sizeof(A) << "\n" << "sizeof(a)=" << sizeof(a) […]

在C#中将XML反序列化为对象

所以我有这样的xml: <todo-list> <id type="integer">#{id}</id> <name>#{name}</name> <description>#{description}</description> <project-id type="integer">#{project_id}</project-id> <milestone-id type="integer">#{milestone_id}</milestone-id> <position type="integer">#{position}</position> <!– if user can see private lists –> <private type="boolean">#{private}</private> <!– if the account supports time tracking –> <tracked type="boolean">#{tracked}</tracked> <!– if todo-items are included in the response –> <todo-items type="array"> <todo-item> … </todo-item> <todo-item> … </todo-item> … </todo-items> </todo-list> 我将如何去使用.NET的序列化库反序列化成C#对象? 目前我正在使用reflection,并使用命名约定映射XML和我的对象之间。

从string(reflection?)从C#dynamic对象获取属性值

假设我有一个dynamicvariables: dynamic d = *something* 现在, 东西创build属性到d我有另一方面从string数组: string[] strarray = { 'property1','property2',….. } 我不提前知道属性名称。 如何在代码中,一旦d被创build,并从数据库拉strarray,我可以得到的价值? 我想得到d.property1 , d.property2 。 我看到该对象有一个_dictionary内部字典,其中包含键和值,我如何_dictionary他们? 非常感谢您的帮助!

在.net dll中embeddedgit commit hash

我正在构build一个C#应用程序,使用Git作为我的版本控制。 有没有一种方法可以在构build我的应用程序时自动将最后一个提交哈希embedded到可执行文件中? 例如,将提交散列打印到控制台看起来是这样的: class PrintCommitHash { private String lastCommitHash = ?? // What do I put here? static void Main(string[] args) { // Display the version number: System.Console.WriteLine(lastCommitHash ); } } 请注意,这必须在构build时完成,而不是运行时 ,因为我部署的可执行文件不会有可访问的git仓库。 有关C ++的相关问题可以在这里find。 编辑 Per @ mattanja的请求,我发布我的项目中使用的git钩子脚本。 设置: 挂钩是linux shell脚本,放在: path_to_project \ .git \ hooks下 如果你使用msysgit , hooks文件夹已经包含了一些示例脚本。 为了让git调用它们,从脚本名称中删除'.sample'扩展名。 钩子脚本的名称与调用它们的事件相匹配。 就我而言,我修改了提交 后和合并后 。 […]

Visual Studio 2015 RTM – debugging不起作用

我已经安装了VS 2015 RTM(没有别的),我无法debugging任何解决scheme,无论是现有的还是全新的(使用VS 2015创build,并针对.Net Framework 4.6编译),它只会打开一个VS中的新选项卡被称为Break模式,其中包含以下文本:应用程序处于中断模式您的应用程序已进入中断状态,但所选debugging引擎不支持执行代码(例如,仅执行本机运行时代码)。 如果我检查debugging – >模块窗口:VS2015Test.vshost.exe没有符号加载(即使我点击加载符号它不起作用)VS2015Test.exe符号加载 它也不会在控制台上显示输出(这是一个控制台应用程序,只是有以下几行代码: class Program { static void Main(string[] args) { Console.WriteLine("TEST"); Console.ReadKey(); } } 我试图重新安装VS 2015,重新启动计算机,删除%temp%/ AppData / Microsoft / Visual Studio / 14中的所有文件,启动VSpipe理模式,但似乎没有任何工作。 有一个让debugging工作的东西是这个选项:工具 – >选项 – >debugging – >使用托pipe兼容模式 ^^但是这不可能是使用旧/旧模式的解决scheme。 顺便说一句:在VS 2013的debugging工作正常。 任何帮助,将不胜感激。

是否有可能使用boost :: foreach和std :: map?

我发现boost :: foreach非常有用,因为它节省了我很多的写作。 例如,假设我想打印列表中的所有元素: std::list<int> numbers = { 1, 2, 3, 4 }; for (std::list<int>::iterator i = numbers.begin(); i != numbers.end(); ++i) cout << *i << " "; boost :: foreach使上面的代码更加简单: std::list<int> numbers = { 1, 2, 3, 4 }; BOOST_FOREACH (int i, numbers) cout << i << " "; 好多了! 然而,我从来没有想出一个方法(如果可能的话)使用它的std::map s。 该文档只有像vector或stringtypes的例子。

OpenSubKey()返回null,我可以在regedit.exe中看到一个registry项

我试图获取这个键内的所有子键的显示名称: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 有了这个代码: RegistryKey newKey; string val; string KeyPath64Bit = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; RegistryKey mainKey = Registry.LocalMachine.OpenSubKey(KeyPath64Bit); string[] RegKeys64Bits = Registry.LocalMachine.OpenSubKey(KeyPath64Bit).GetSubKeyNames(); foreach (string s in RegKeys64Bits) { newKey = mainKey.OpenSubKey(s); val = newKey.GetValue("DisplayName", -1, RegistryValueOptions.None).ToString(); if (val != "-1") file64.WriteLine(val); } 运行代码后,我找不到我需要的一个键: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E} 它应该有显示名称:Microsoft Visual C ++ 2010 x64 Redistributable – 10.0.30319,而是GetSubKeyNames()方法给我的子项: {DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}.KB2151757它没有任何显示名称。 为什么我不能得到我需要的确切的子密钥( {DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E} ),我怎样才能得到它?

用嵌套的Foreach语句迭代multidimensional array

我认为这可能是一个非常简单的问题,但我还没有弄清楚。 如果我有这样的二维数组: int[,] array = new int[2,3] { {1, 2, 3}, {4, 5, 6} }; 用嵌套的foreach语句遍历数组的每个维度的最佳方法是什么?

在C#中使用IsAssignableFrom和“is”关键字

在尝试学习Unity时 ,我一直看到下面的代码来覆盖MVC中的GetControllerInstance : if(!typeof(IController).IsAssignableFrom(controllerType)) { … } 这似乎是一个基本写作的非常复杂的方式 if(controllerType is IController) { … } 我很欣赏is和IsAssignableFrom之间的细微差别,即IsAssignableFrom不包括IsAssignableFrom转换,但是我正努力去理解这种差异在实际场景中的含义。 什么时候selectIsAssignableFrom over is IsAssignableFrom is ? 在GetControllerExample会有什么不同? if (!typeof(IController).IsAssignableFrom(controllerType)) throw new ArgumentException(…); return _container.Resolve(controllerType) as IController;