到底是什么之间的区别HintPath在.csproj的文件和ReferencePath一个.csproj.user文件?我们试图提交一个约定,其中依赖DLL在"发布"svn repo中,并且所有项目都指向特定版本.由于不同的开发人员具有不同的文件夹结构,因此相对引用将不起作用,因此我们提出了一种方案,使用指向特定开发人员版本文件夹的环境变量来创建绝对引用.因此,在添加引用之后,我们手动编辑项目文件以使用环境变量将引用更改为绝对路径.
我注意到这可以通过HintPath和它完成ReferencePath,但我可以在它们之间找到的唯一区别HintPath是在构建时和ReferencePath项目加载到IDE时解决了.我不确定那是什么后果.我注意到VS有时会重写.csproj.user并且我必须重写它ReferencePath,但我不确定是什么触发了它.
我听说最好不要检查.csproj.user文件,因为它是特定于用户的,所以我想针对这一点,但我也听说过,HintPath如果加载了指定的DLL并不"保证"相同的DLL例如位于项目的输出目录中.有什么想法吗?
不知何故用谷歌搜索找不到这个,但我觉得它必须简单......我需要将字符串转换为固定长度的字节数组,例如将"asdf"写入byte[20]数组.数据通过网络发送到需要固定长度字段的c ++应用程序,如果我使用BinaryWriter并逐个写入字符,它可以正常工作,并通过写'\ 0'适当的次数填充它.
有没有更合适的方法来做到这一点?
我一直在使用SQL Server存储几十万个对象的历史时间序列数据,每天观察大约100次.我发现查询(给我在时间t1和时间t2之间的对象XYZ的所有值)太慢(对于我的需要,慢是超过一秒).我按时间戳和对象ID索引.
我接受了使用像MongoDB这样的键值商店的想法,但我不确定这是否是对这种事物的"适当"使用,我找不到任何提及使用这样的东西时间序列数据的数据库.理想情况下,我可以执行以下查询:
应该对数据进行排序,理想情况下,编写新数据以及更新现有数据应该快速.
似乎我希望按对象ID和时间戳查询可能需要以不同的方式索引数据库的两个副本以获得最佳性能......任何人都有建立像这样的系统的经验,具有键值存储,或HDF5,还是其他什么?或者这在SQL Server中完全可行,我只是不做对吗?
我想重用我编写的一些代码来为datagridview添加一些功能.我希望公开默认的datagridview属性和事件,因此我不想创建新的自定义组件.所以我尝试编写一个子类,工作正常.但我也想到我可以编写一个独立的实用程序类,它在构造函数中获取datagridview并以相同的方式设置它.例如
public class
MyGrid
{
private DataGridView m_dg;
public MyGrid(DataGridView dg)
{
m_dg = dg;
m_dg.RowHeadersVisible = false;
m_dg.SortCompare += new DataGridViewSortCompareEventHandler(m_dg_SortCompare);
}
void m_dg_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
{
// do custom sorting here
}
}
Run Code Online (Sandbox Code Playgroud)
所以在我的应用程序启动的某个地方,我会打电话
MyGrid g1 = new MyGrid(dataGridView1);
MyGrid g2 = new MyGrid(dataGridView2);
Run Code Online (Sandbox Code Playgroud)
等等.这种方法的任何缺点?看起来大部分代码都是一样的,不同之处在于如何实例化扩展网格(将子类控件拖放到表单中,拖动普通数据网格并调用上面的代码)
是否可以从字符串中创建c#中的匿名方法?
例如,如果我有一个字符串"x + y * z",才有可能把它变成某种方法/λ对象,我可以任意拨打x,y,z参数?
我们有一些常见的库(C#,但我想这不是平台或语言特定的),让我们称它们为A,B和C.库A引用了B和C,库B引用了第三方DLL,库C独立.三个独立项目背后的想法是每个库都有不同的功能,但随着时间的推移,库A成为一个或多或少"全能"的公共库,大多数客户端应用程序都引用它.只有少数应用程序在没有A的情况下引用B和/或C.
我们正试图改进我们的源代码控制约定,我们要做的一件事是正确地标记和释放这些库DLL,因此客户端项目文件可以指向代码的静态版本而不是始终更改的主干.这有点令人费解 - 例如,一个引用A和B的客户端项目.A本身引用B,因此技术上有两个来自客户端项目的B引用.
因此,显而易见的事情似乎是将所有内容组合到一个具有组织良好的命名空间的公共/实用程序库中.正如我所说,几乎每个客户端应用程序都引用了这些库中的一个,所以谁在乎呢?这样做不会引入第三方依赖的任何不良情况,并且我们所有的目标机器都是内部的并且维护大致相同的环境/软件配置.
这似乎太容易解决了,所以我想我至少得到第二个意见.另一种方法是使用GAC并强烈签署/版本化所有内容.我在这里错过任何捕获物吗?
我希望建立在C#中的一些数据汇总的东西,我想一个类似于实时数据透视表,或某种形式的不断更新SQL查询,与支持select,sum,average,first,where,和group-by(其中first在LINQ的“给我第一价值”的意义)。
例如,我可能有某种形式的表对象的所谓Trans的列Name,Date和Total,并呼吁另一个表Price的列Name和Price。我想创建某种Query实例(在伪SQL中)
select Name, sum(Total), first(Price) from Trans, Price join on Name group by Name
Run Code Online (Sandbox Code Playgroud)
并将其传递给Aggregator具有指向数据源链接的实例。与此同时,我想注册一个在查询产生的行发生更改时命中的回调。因此,如果名为“ XYZ”的实体的价格发生变化,则回调将触发一个对象,该对象包含该汇总行的新值。我还希望Aggregator尽可能高效,因此它将有某种索引方案,因此无论何时值更改都不需要进行表扫描。
我不太确定该怎么称呼,并且我希望能够完全用C#来实现某些东西,前提是它并不比我想象的要复杂一个数量级。我已经读过Continuous LINQ和Bindable LINQ,但是我真的无法感觉是否适合这个问题,或者是否存在性能问题(例如,只要值改变,LINQ聚合就会枚举整个表)。
有谁知道一个项目可以执行类似的工作,或者对自己设计/构建有任何建议?
编辑:我应该注意,数据实际上不会在数据库中,而是会在内存中。
如果我在Visual Studio 2008中为C#DLL设置程序集版本号,是否可以让编译后的二进制文件自动在文件名中包含此版本号?如果我手动重命名文件,引用它的项目会中断.这是为什么?文件名是否以某种方式映射到里面的程序集名称?
是否有一种很好的方法可以GroupBy在运行时确定分组键的Linq ?例如,我希望从用户选择的字段列表构建分组键 - 你能这样做吗?我知道我可以很容易地做到这一点,如果我转换一切字串的表,但我想知道是否有其他方式来完成这个优雅的或聪明的办法.
class Item
{
public int A, B;
public DateTime D;
public double X, Y, Z;
}
Run Code Online (Sandbox Code Playgroud)
我List<Item>有个叫data.我想要做的事情一样检索的总和X按分组A,或的总和X,Y以及Z通过分组A和B.但是应该能够以某种方式在运行时指定哪些字段进入分组.
我正在建立一个基于树的数据结构并重载[]以便我可以说
node["key1", "key2", "key3"]
Run Code Online (Sandbox Code Playgroud)
返回其父级1,2和3级以上是具有这些键的节点的节点.节点在概念上映射到数据数组,所以我现在拥有的是这个函数:
node[keys...].SetValue(i, value)
Run Code Online (Sandbox Code Playgroud)
它设置节点数据中的第i个值.如果我能做到这一点会有什么好处:
node[keys][i] = value
Run Code Online (Sandbox Code Playgroud)
问题是,node [keys]返回一个节点,因此[i]索引尝试获取另一个节点.基本上我想要做的是重载"[] []"作为运算符,我不能.
有什么方法可以达到我想做的事情吗?
c# ×7
dll ×2
.net ×1
aggregation ×1
bytearray ×1
controls ×1
database ×1
datagridview ×1
dependencies ×1
group-by ×1
linq ×1
real-time ×1
string ×1
subclassing ×1
time-series ×1
utility ×1
versioning ×1