我刚刚将一个项目从VS2008升级到了VS2010,但我仍然以3.5框架为目标.
在我的项目文件中,我有一个自定义任务来运行SGEN来生成我的XmlSerializers.dll.但是,正在运行的sgen版本的目标是4.0框架.因此,当我运行我的应用程序时,我收到错误消息:
"无法加载文件或程序集'XXXX.XXXX.XmlSerializers'或其依赖项之一.此程序集由比当前加载的运行时更新的运行时构建,无法加载."
Sgen任务看起来像这样:
<Target Name="AfterBuild" DependsOnTargets="AssignTargetPaths;Compile;ResolveKeySource" Inputs="$(MSBuildAllProjects);@(IntermediateAssembly)" Outputs="$(OutputPath)$(_SGenDllName)">
<!-- Delete the file because I can't figure out how to force the SGen task. -->
<Delete Files="$(TargetDir)$(TargetName).XmlSerializers.dll" ContinueOnError="true" />
<SGen BuildAssemblyName="$(TargetFileName)" BuildAssemblyPath="$(OutputPath)" References="@(ReferencePath)" ShouldGenerateSerializer="true" UseProxyTypes="false" KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)" DelaySign="$(DelaySign)" ToolPath="$(SGenToolPath)">
<Output TaskParameter="SerializationAssembly" ItemName="SerializationAssembly" />
</SGen>
</Target>
Run Code Online (Sandbox Code Playgroud)
有ToolPath ="$(SGenToolPath)".如何让它运行目标为3.5的版本?
这里有一个类似的问题,但它对我没什么帮助.
我有一个C#背景.我非常喜欢像C这样的低级语言.
在C#中,struct默认情况下由编译器布局内存.编译器可以隐式地重新排序数据字段或填充字段之间的附加位.因此,我必须指定一些特殊属性来覆盖此行为以获得精确布局.
AFAIK,C struct默认情况下不重新排序或对齐a的内存布局.但是,我听说有一个很难找到的例外.
什么是C的内存布局行为?什么应该重新订购/对齐而不是?
我想这样做,以便任何时候查询数据库,sfGuardUserProfile它是自动连接和水合与其相关sfGuardUser.
如果我使用的是Propel 1.2,我通常会覆盖类的doSelectStmt方法sfGuardUserProfilePeer来检查Criteria并根据需要修改它,以及修改类的hydrate方法sfGuardUserProfile.我不知道如何在Doctrine中这样做.
如何在 ubuntu 上配置 syslog 日志文件的轮换?
在我的 /etc/syslog.conf 中,我有这一行:
local1.* /var/log/log.txt
随着时间的推移,出现了以下备份文件:
/var/log/log.txt.0.gz /var/log/log.txt.1.gz
如何配置这些文件的生成频率以及如何清除它们?
在以下代码中,Foo::add通过函数对象调用函数:
struct Plus {
inline int operator()(int x, int y) const {
return x + y;
}
};
template<class Fct>
struct Foo {
Fct fct;
Foo(Fct f) : fct(f) {}
inline int add(int x, int y) {
return fct(x,y); // same efficiency adding directly?
}
};
Run Code Online (Sandbox Code Playgroud)
这与x+y直接调用的效率相同Foo::add吗?换句话说,在fct(x,y)启用优化的情况下编译时,编译器通常直接替换为实际调用,内联代码吗?
我正在构建一个派生自TabControl的自定义WPF控件.在ControlTemplate中,我使用ItemsControl来显示从模板绑定的列表(FileMenuItem类型的可观察集合).在程序执行期间,我在输出窗口中收到以下错误:
对于ItemsControl容器类型的项目,将忽略ItemTemplate和ItemTemplateSelector; 类型= 'FileMenuItem'
FileMenuItem类型派生自MenuItem.如果我将基类更改为DependencyObject,则实际运行代码并应用模板(这是一个选项).我搜索了错误,无法找到任何关于它的信息,是否有人在开发自定义控件时遇到此问题?即使我有一个解决方法,我想了解发生了什么,我认为使用MenuItem作为基类是一个更清洁的实现.
我可以发布更多代码,如果它会有所帮助.谢谢!
作为主题......有可能吗?
谢谢
再次,我附上了如下代码,请检查哪一步是错误的.谢谢.
//@step
AudioSessionInitialize (NULL, NULL, NULL, NULL);
AudioSessionSetActive(true);
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
OSStatus error = AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof(sessionCategory),&sessionCategory);
if (error)
printf("ERROR AudioSessionSetProperty ! %d\n", error);
//@step
NSString* filePath = @"AlarmClockBell.caf";
[Util restoreResourceFile:filePath];
filePath =[Util getFileFullPathFromSysDoc:filePath];
NSURL *soundFileURL = [NSURL fileURLWithPath:filePath];
NSError* error ;
AVAudioPlayer * audioPalyer = [[AVAudioPlayer alloc] initWithContentsOfURL: soundFileURL error: &error];
if (nil == audioPalyer)
{
AppTrace3(self, @"Faild to play", soundFileURL, error);
return FALSE;
}
[audioPalyer prepareToPlay];
[audioPalyer setVolume: 5 ];
[audioPalyer setDelegate: self];
audioPalyer.numberOfLoops = …Run Code Online (Sandbox Code Playgroud) 我想创建某种分布式设置,以便在生产环境中运行大量小型/简单的REST Web查询.对于从节点执行的每个5-10个相关查询,我将生成非常少量的派生数据,这些数据需要存储在标准关系数据库(例如PostgreSQL)中.
为这类问题集构建了哪些平台?性质,数据大小和数量似乎与Hadoop的思维方式相矛盾.还有更多基于网格的架构,例如Condor和Sun Grid Engine,我已经看过了.我不确定这些平台是否可以从错误中恢复(检查作业是否成功).
我真正想要的是一个FIFO类型的队列,我可以添加作业,最终结果是我的数据库得到了更新.
关于这项工作的最佳工具的任何建议?
如果有人能够根据Visual Studio的Code Metrics规则向我解释以下两段代码之间的区别,我将不胜感激.如果我不将所有内容封装在内,为什么可维护性指数会略有增加using ( )?
样本1(MI分数为71)
public static String Sha1(String plainText)
{
using (SHA1Managed sha1 = new SHA1Managed())
{
Byte[] text = Encoding.Unicode.GetBytes(plainText);
Byte[] hashBytes = sha1.ComputeHash(text);
return Convert.ToBase64String(hashBytes);
}
}
Run Code Online (Sandbox Code Playgroud)
样本2(MI分数为73)
public static String Sha1(String plainText)
{
Byte[] text, hashBytes;
using (SHA1Managed sha1 = new SHA1Managed())
{
text = Encoding.Unicode.GetBytes(plainText);
hashBytes = sha1.ComputeHash(text);
}
return Convert.ToBase64String(hashBytes);
}
Run Code Online (Sandbox Code Playgroud)
我理解指标在更广泛的背景和理解之外是没有意义的,程序员应该行使自由裁量权.虽然我可以将分数提高到76 return Convert.ToBase64String(sha1.ComputeHash(Encoding.Unicode.GetBytes(plainText))),但我不应该.我显然只是在玩数字,而且在那一点上它并不是真正的可读性或可维护性.我很好奇这个案例增加背后的逻辑是什么.这显然不是行数.