我正在寻找关于命名程序集和版本化它们的一些好方法.您多久递增一次主要版本或次要版本?
在某些情况下,我看到版本从1.0版本直接发布到3.0版本.在其他情况下,它似乎停留在版本1.0.2.xxxx.
这将用于整个公司的多个项目中使用的共享程序集.期待一些良好的投入.
Assembly和DLL有什么区别?在将代码发送到远程客户端时,是应该发送DLL文件还是应该发送程序集(当两者之间有直接TCP连接时)?
是否可以在加载程序集时运行某些代码,而无需在加载代码中执行任何特定操作?我正在寻找的就像一个类型的静态构造函数.
例如:
程序集A不知道程序集B,但B确实知道A.如果加载B,程序集A需要知道关于B的某些事情.当程序集B由运行时加载(引用或显式)时,我想要执行一段调用程序集A中的方法的代码(静态方法或属性).
此问题的根本原因是序列化A中的类型时遇到的未知类型,该类型包含B中的类型,这些类型在编译时未知,因为使用了接口.
我需要在比特流中扫描16位字.不保证在字节或字边界上对齐.
实现这一目标的最快方法是什么?有各种蛮力方法; 使用表和/或移位,但是有没有"bit twiddling shortcuts"可以通过给出yes/no /也可以包含每个字节或单词到达时的标志结果来减少计算次数?
C代码,内在函数,x86机器代码都很有趣.
无论出于何种原因,我似乎无法获得引用程序集中的类型列表.不仅如此,我甚至无法看到这个引用的程序集.
我试过了AppDomain.CurrentDomain.GetAssemblies(),但它只返回已经加载到内存中的程序集.
我试过Assembly.GetExecutingAssembly().GetReferencedAssemblies(),但这只是返回mscorlib.
我错过了什么?
我已经安装了新的iOS 6.1和Xcode 4.6,现在我的代码中有一些枚举警告,我无法解决这个问题:
[UIView animateWithDuration:0.4
delay:0.0
options:UIViewAnimationCurveEaseOut
animations:^{
} completion:^(BOOL finished) {}];
Run Code Online (Sandbox Code Playgroud)
这是警告:
Implicit conversion from enumeration type 'enum UIViewAnimationCurve' to different enumeration type 'UIViewAnimationOptions' (aka 'enum UIViewAnimationOptions')
Run Code Online (Sandbox Code Playgroud)
我怎么能解决这个警告?
我(现在仍在)寻找在.net(c#)应用程序中使用的嵌入式数据库.警告:应用程序(或至少数据库)存储在网络驱动器上,但一次仅由1个用户使用.
现在,我的第一个想法是SQL Server Compact版.这真的很好地融合了,但它无法在网络上运行.
Firebird似乎有同样的问题,但.net集成似乎并不是真正的一流,而且很大程度上没有文档记录.
Blackfish SQL看起来很有趣,但没有.net版本的试用版.定价也行.
对.net 运行良好并且无需实际安装服务器软件即可在网络上运行的任何其他建议?
Nutshell中的C#4(强烈推荐的btw)使用以下代码来演示MemoryBarrier的概念(假设A和B在不同的线程上运行):
class Foo{
int _answer;
bool complete;
void A(){
_answer = 123;
Thread.MemoryBarrier(); // Barrier 1
_complete = true;
Thread.MemoryBarrier(); // Barrier 2
}
void B(){
Thread.MemoryBarrier(); // Barrier 3;
if(_complete){
Thread.MemoryBarrier(); // Barrier 4;
Console.WriteLine(_answer);
}
}
}
Run Code Online (Sandbox Code Playgroud)
他们提到障碍1和4阻止这个例子写0和障碍2和3提供新鲜度保证:他们确保如果B在A之后运行,读_complete将评估为真.
我不是真的得到它.我想我明白为什么壁垒1和4是必要的:我们不想在写_answer进行优化,并放置在写后_complete(屏障1),我们需要确保_answer没有被缓存(光栅4) .我也认为我理解为什么Barrier 3是必要的:如果A在写完_complete = true之后才运行,B仍然需要刷新_complete以读取正确的值.
我不明白为什么我们需要障碍2!我的一部分说这是因为可能线程2(运行B)已经运行直到(但不包括)if(_complete),因此我们需要确保_complete被刷新.
但是,我不知道这有多大帮助.是不是仍然可以在A 中将_complete设置为true但是B方法会看到_complete的缓存(错误)版本?即,如果线程2运行方法B直到第一个MemoryBarrier之后,然后线程1运行方法A直到_complete = true但没有进一步,然后线程1恢复并测试是否(_complete) - 如果不导致错误 …
c# multithreading thread-safety shared-memory memory-barriers