快递版C#桌面应用程序.工作后5秒钟没有工作.
我尝试了以下内容.
我在解决方案中有两个WinForms项目.其中一个加载调试信息,一个不加载.它们都指的是我试图以完全相同的方式在项目文件中获取调试信息的程序集.有任何想法吗?
我想补充在这里,主要是为我自己,当我回过头来审查这个问题,该符号不加载,直到组件加载,并且没有加载组件直到需要它.如果断点位于仅在主程序集中的一个函数中使用的库中,则在调用该函数之前,将不会加载符号(并且将显示断点未被命中).
好吧,假设我有Ruby程序来读取版本控制日志文件并对数据执行某些操作.(我没有,但情况类似,我对这些类比很开心).我们现在假设我想支持Bazaar和Git.假设程序将以某种参数执行,指示正在使用哪个版本控制软件.
鉴于此,我想创建一个LogFileReaderFactory,它给出版本控制程序的名称将返回一个适当的日志文件读取器(从泛型中继承)以读取日志文件并吐出规范的内部表示.所以,当然,我可以制作BazaarLogFileReader和GitLogFileReader并将它们硬编码到程序中,但是我希望它能够以这样的方式设置:添加对新版本控制程序的支持就像填充新的类文件一样简单在Bazaar和Git阅读器的目录中.
所以,现在你可以调用"do-something-with-the-log --software git"和"do-something-with-the-log --software bazaar",因为有那些日志阅读器.我想要的是可以简单地将一个SVNLogFileReader类和文件添加到同一目录中,并自动调用"do-something-with-the-log --software svn",而无需对其余部分进行任何更改.程序.(这些文件当然可以用特定的模式命名,并在require调用中进行全局化.)
我知道这可以在Ruby中完成......我不知道应该怎么做......或者如果我应该这样做的话.
假设您正在设置数据库来存储各种车辆的碰撞测试数据.您想存储快艇,汽车和卡丁车的碰撞测试数据.
您可以创建三个单独的表:SpeedboatTests,CarTests和GokartTests.但是每个表中的很多列都是相同的(例如,执行测试的人员的员工ID,碰撞的方向(正面,侧面,后面)等).但是,很多列都会有所不同,因此您不希望将所有测试数据放在一个表中,因为您将拥有相当多的列,对于快艇来说总是为空,相当多的列始终是对于汽车来说是零,而对于卡丁车来说,相当多的都是空的.
假设您还想存储一些与测试没有直接关系的信息(例如正在测试的东西的设计者的员工ID).这些列根本不适合放入"测试"表,特别是因为它们将在同一车辆上的所有测试中重复使用.
让我说明一种可能的表格排列,以便您可以看到所涉及的问题.
Speedboats id | col_about_speedboats_but_not_tests1 | col_about_speedboats_but_not_tests2 Cars id | col_about_cars_but_not_tests1 | col_about_cars_but_not_tests2 Gokarts id | col_about_gokarts_but_not_tests1 | col_about_gokarts_but_not_tests2 Tests id | type | id_in_type | col_about_all_tests1 | col_about_all_tests2 (id_in_type will refer to the id column of one of the next three tables, depending on the value of type) SpeedboatTests id | speedboat_id | col_about_speedboat_tests1 | col_about_speedboat_tests2 CarTests id | car_id | col_about_car_tests1 | col_about_car_tests2 GokartTests id | gokart_id | col_about_gokart_tests1 | col_about_gokart_tests2
这个结构的优点/缺点是什么,实现这样的优先方式是什么?
如果还有一些信息适用于您希望在车辆表中使用的所有车辆,该怎么办?那么CarTests表看起来像......
id | …
database-design polymorphic-associations class-table-inheritance
使用此答案,我创建了一个示例本地化应用程序.我的问题是,有没有办法让Visual Studio自动生成strings.fr.resx文件,其中包含相同的字符串(相同的名称,即空值),所以知道法语的人可以填写它们,或者我是实际上必须为我想支持的每种语言手动创建资源?
如何将浏览器用作桌面应用的UI?到目前为止我提出的方法是......
理想的解决方案适用于任何技术.我知道有一些选项可以编写Firefox扩展,但我希望在后端技术和浏览器独立性方面拥有完全的自由.
我正在考虑程序没有真正计算任何东西的情况,它只是做了很多.当你编写计算某些东西的函数并且你需要检查结果时,单元测试对我来说是有意义的,但是如果你没有计算任何东西呢?例如,我在工作中维护的程序依赖于让用户填写表单,然后打开外部程序,并使外部程序自动执行基于用户输入的操作.这个过程相当复杂.有3000行代码(分散在多个函数中*),但我想不出一个单元测试有意义的东西.
这只是一个例子.你是否应该尝试对"程序"程序进行单元测试?
*编辑
我有一个运行良好的NUnit测试的dll.我将它从Any CPU转换为x86项目,因为我需要在不同平台上可靠地使用SQLite,所以我需要包含32位System.Data.SQLite.dll并让所有内容引用它.
无论如何,转换后,NUnit在尝试加载dll时会出错.
我认为这根本不具有启发性,但这里是堆栈跟踪:
System.IO.FileNotFoundException: Could not load file or assembly ... or one of its dependencies. The system cannot find the file specified" Server stack trace: at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) at System.Reflection.Assembly.Load(String assemblyString) at NUnit.Core.Builders.TestAssemblyBuilder.Load(String path) at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, Boolean autoSuites) at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, String testName, Boolean autoSuites) at NUnit.Core.TestSuiteBuilder.BuildSingleAssembly(TestPackage …
我从一个例子中复制了这段代码.我已经读过100次了.
Array.prototype.map = function(fn) {
var r = [];
var l = this.length;
for(var i = 0; i < l; i++) {
r.push(fn(this[i]));
}
return r;
};
Run Code Online (Sandbox Code Playgroud)
为什么Firefox说:
not well-formed
file:///some/path.html Line: 5
for(var i = 0; i < l; i++) {
-------------------^
Run Code Online (Sandbox Code Playgroud)
UPDATE
只有在为页面打开Firebug时才会显示错误.
现在我正在做:
bool UseMetricByDefault() {
return TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).TotalHours >= 0;
}
Run Code Online (Sandbox Code Playgroud)
这有助于区分美国与欧洲和亚洲,但它忽略了南美洲.
有没有更好的办法?
我维护一个Delphi程序,它使用类型化的二进制文件作为其本机文件格式.从Turbo Delphi升级到Delphi 2010后,存储的记录类型中的所有字符开始以2个字节而不是1个字节存储.
存储的数据类型是char
和array[1..5] of char
.
所以之前,文件的一部分看起来像:
4C 20 20 20 4E 4E 4E 4E
Run Code Online (Sandbox Code Playgroud)
现在它看起来像:
4C 00 20 00 20 00 20 00 4E 00 4E 00 4E 00 4E 00
Run Code Online (Sandbox Code Playgroud)
首先,为什么这首先发生?
其次,我怎么还能读取我的文件,记住现在宇宙中有旧文件和新文件?
我会在午餐后痴迷地监视这个问题.请随时在评论中询问更多信息.
.net ×4
c# ×2
debugging ×2
localization ×2
32bit-64bit ×1
binary ×1
breakpoints ×1
browser ×1
delphi ×1
delphi-2010 ×1
javascript ×1
nunit ×1
ruby ×1
sqlite ×1
unit-testing ×1