我正在编写一个游戏开发IDE,用于创建和编译.NET项目(我过去几年一直在研究),并且我正在更新它以生成输出,不仅适用于Windows/Visual Studio,还适用于对于Linux/MonoDevelop(一个非常简单的.NET进程,但仍然需要一些调整).
作为其中的一部分,我发现有必要开始生成app.config文件作为其中的一部分,以将依赖的DLL名称映射到具有<dllmap>元素的Linux依赖项名称.我很担心谁负责将app.config文件复制到输出名称app.exe.config.在Visual Studio项目中,app.config的Build Action通常设置为"None",其设置表明它不会被复制到任何地方,但是当Visual Studio编译项目时它会生成app.exe.config(虽然我有时发现这是不可靠的).当我使用MSBuild构建IDE生成的解决方案文件(用于调试目的)时,MSBuild将app.config复制到app.exe.config.但是当我使用CSharpCodeProvider.CompileAssemblyFromFile编译项目时(自然而然)并没有 像配置文件作为源代码包含("app.config(1,1):错误CS0116:命名空间不直接包含诸如字段或方法之类的成员"),当然它不会将其复制到当我不将它作为输入包括时输出.我是否有责任单独将app.config复制到app.exe.config,或者有更标准的方法吗?
是否硬连线采用第一个*.config文件?在我的IDE中,可以想象app.config文件将被重命名或添加另一个(就像在Visual Studio中一样).我觉得IDE对配置文件有这个秘密行为似乎很奇怪(我认为MonoDevelop在这方面表现相似,因为我找不到配置文件的特殊操作).我不知道它甚至会选择这个秘密行动适用的文件.
过去几天我一直在研究soundex,metaphone和其他字符串搜索技术,据我所知,这两种算法在处理音译到英语的非英语单词时效果很好.
然而,我的要求是这样的搜索工作在原始的,非音译语言,容纳字母表,如德语,挪威语,甚至Cyrilic字母表.
有没有能够完全处理这些字母的搜索算法?或者我最好使用第三方全文搜索库,如Lucene?因此,问题就变成了"Lucene处理非英文字母吗?"
作为第二次采访,我让人们坐下来编写代码......我试着让问题真的与技术无关.
我的编程问题,我没有真正运用人们的OO能力.我倾向于尝试在2小时内解决编码问题.所以,我一直在努力找到一个足够小的问题并且足够参与其暴露了人们的OO设计技巧.
有什么建议?
看一下代码片段:
这是我在编写枚举时通常所做的事情.我有一个带有InvalidOperationException的默认转义(我不使用ArgumentException或它的一个派生,因为编码是针对私有实例字段而不是传入参数).
我想知道你们的开发人员是否也编写了这个逃避的想法....
public enum DrivingState {Neutral, Drive, Parking, Reverse};
public class MyHelper
{
private DrivingState drivingState = DrivingState.Neutral;
public void Run()
{
switch (this.drivingState)
{
case DrivingState.Neutral:
DoNeutral();
break;
case DrivingState.Drive:
DoDrive();
break;
case DrivingState.Parking:
DoPark();
break;
case DrivingState.Reverse:
DoReverse();
break;
default:
throw new InvalidOperationException(
string.Format(CultureInfo.CurrentCulture,
"Drivestate {0} is an unknown state", this.drivingState));
}
}
}
Run Code Online (Sandbox Code Playgroud)
在代码审查中,我遇到了许多在默认转义中只有break语句的实现.这可能是一个问题随着时间的推移....
我配置了一个构建策略,可以在线成功检入Visualstudio.但请保留此错误:
Summary
Other Errors
1 error(s)
Exception Message: The path '$/myproject/mysulution.sln' could not be converted to a local path. Make sure this path is relative to the 'src' folder on the build machine or specify a full server path.
(type ArgumentException)
Exception Stack Trace:
at Microsoft.TeamFoundation.Build.Activities.Core.LocalPathProvider.GetLocalPath(String incomingPath)
at System.Activities.CodeActivity`1.InternalExecute(ActivityInstance instance, ActivityExecutor executor,
BookmarkManager bookmarkManager)
at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)
Run Code Online (Sandbox Code Playgroud)
我使用托管的构建控制器,我的构建文件夹在我的本地电脑上.有谁知道我做错了什么?
你在哪里绘制线来停止抽象并开始编写合理的代码?有很多"企业代码"的例子,比如十几个文件"FizzBuzz"程序......即使像RTS游戏那样简单的东西也可以有:
class Player {} ;/// contains Weapons
class Weapons{} ;/// contains BulletTypes
class BulletType{} ;///contains descriptions of Bullets
class Bullet{} ;///extends PlaceableObject and RenderableObject which can be placed/drawn respectively
class PlaceableObject{} ;///has x,y,z, coords
class RenderableObject{} ;///an object with a draw() command
class MovingObject{}; ///an object with a move() function
Run Code Online (Sandbox Code Playgroud)
等...它可以变成一场噩梦.这可以被绘制到它的逻辑极端,就像函数式编程可以被绘制到极端,你可以创建一个只有变量,函数应用程序和匿名函数定义的语言(虽然我必须承认它稍微更优雅)...
关于这个话题的任何理智的建议?
在为使用AJAX的应用程序设计和构建UI时,您何时考虑优雅降级(对于禁用JavaScript或使用屏幕阅读器的用户)?
我正在使用silverlight,我想提交一个ObservableCollection.
所以我开始关注ICollectionView,因为Silverlight中没有CollectionViewSource,它包含大量的方法和事件.我已经搜索了一段时间,我想知道是否有人有ICollectionView实现的示例代码?
我有一个iPhone应用程序:当你打开应用程序时,你会看到"LoginView".如果您登录到应用程序,您会看到一个TabBarController.在第三个和最后一个选项卡中有"注销"按钮.如果单击,则会再次看到"LoginView".我的问题是,如果你再次登录,你会看到"旧"标签栏,所选标签是第三个,而不是一个标签,并且有一个"退出"按钮.此外,如果用户使用其他用户登录,请查看上一个用户的旧数据(非常危险).
这是代码: - Delegate.h:
UITabBarController *tabBarController;
LoginViewController *loginView;
Run Code Online (Sandbox Code Playgroud)
- Delegate.m(didFinishLaunchingWithOptions):
[self.window makeKeyAndVisible];
loginView = [[LoginViewController alloc] init];
if (YES) { /* if the user is not already logged */
[self.window addSubview:loginView.view];
}
Run Code Online (Sandbox Code Playgroud)
Delegate.m(方法):
- (void)loginComplete {
[loginView dismissModalViewControllerAnimated:YES];
[window addSubview:tabBarController.view];
}
- (void)logoutComplete {
[[tabBarController view] removeFromSuperview];
[tabBarController release];
[window addSubview:loginView.view];
}
Run Code Online (Sandbox Code Playgroud)
这是两个不同viewcontrollers中的两种方法:
- (IBAction)login:(id)sender {
TabNavisAppDelegate *delegate =
(TabNavisAppDelegate *) [[UIApplication sharedApplication] delegate];
[delegate loginComplete];
}
Run Code Online (Sandbox Code Playgroud)
(注销方法是一样的)
伙计们,我该如何解决这个痛苦的问题呢?所以,这里有一个我想要的应用程序列表:"Foursquare","Brightkite"等.每个人都有一个登录屏幕,一个标签栏视图和一个注销按钮.
感谢大家.
我有一个foreach调用一个方法来获取它的集合.
foreach(var item in GetItemDetails(item))
{
}
Run Code Online (Sandbox Code Playgroud)
Visual Studio并没有抱怨这一点,Resharper也没有,在我继续使用这种方法之前,我想伸出手来检查它是否是推荐的方法.