小编God*_*eke的帖子

Visual Studio 2010构建文件锁定问题

我有一个Visual Studio 2008项目,我"升级"到Visual Studio 2010.自升级以来,我一直遇到很多项目问题(一个项目过去和现在仍然是警察,我可能会添加).

第一个问题是构建主可执行文件会锁定可执行文件,从而导致进一步的重建失败.这是在一个相关的问题中描述的:Visual Studio在构建锁定输出文件,我选择了解决方法:

if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if exist "$(TargetPath)" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"
Run Code Online (Sandbox Code Playgroud)

除了这个解决方法只适用一次.然后.locked文件也被devenv.exe锁定,必须移动.我一直在通过添加.1.locked,.2.locked等来解决这个问题.唯一一次删除锁以便删除文件是关闭devenv.exe(UI后需要几秒钟)消失,然后可以删除文件).

调试器不必用于导致此问题的事实表明2010构建系统存在相当严重的问题.

我认为我可以打折的一些理论:

  • 防病毒或其他后台任务:如果这是一个问题,它似乎会失败.然而,作为一个完整的我删除了avast!系统完全没有运气.

更新:此项目在没有防病毒且没有备份实用程序的计算机上具有相同的症状.办公室的机器运行XP SP3 32bit,我的本地机器是Windows 7 64位.这似乎与操作系统无关.

  • 调试器正在锁定文件:重现此操作所需的全部内容是重复构建过程而不进行调试.ProcessExplorer显示devenv.exe是锁的持有者,而不是vshost并且杀死vshost.exe无论如何都不会删除锁.

我有一个次要问题,一旦文件被锁定就开始出现:表单设计者停止加载"无法找到程序集"错误.我怀疑这些与早期的锁定问题有关,因为设计人员构建之前就开始了,但是进行任何更改和重建都会导致所有设计人员崩溃并出现错误(即使是我已经打开并作为当前视图).

观看靠近白色错误屏幕的表单是可怜的,因为你将"dummy = 1"改为"dummy = 2",其中"dummy"绝对没有任何东西,只是强制重新编译一个完全不相关的程序集.

更新:我已经尝试了一些补救措施:未选中启用.NET源步进,因此这不是问题.删除.SUO(解决方案用户选项)只需重启通常可以解决问题(两个构建:第一个因为没有锁定文件而第二个因为有一个,但它可以由脚本重命名).

Error   28  Unable to copy file "obj\Debug\PolicyTracker3.exe" to "bin\Debug\PolicyTracker3.exe". 
The process cannot access the file 'bin\Debug\PolicyTracker3.exe' because it is being used by another process.  
Run Code Online (Sandbox Code Playgroud)

visual-studio-2010

21
推荐指数
1
解决办法
1万
查看次数

从Windows窗体迁移到WPF ......值得吗?

我还有一个用Windows Forms编写的桌面应用程序,它是一个中等大小(由数据库中的46个表支持的几十个主要表单).我正在考虑重写WPF中的用户界面,但在我去那里之前我很好奇是否有关于进行这种转换的战争故事.

我使用LLBLGen生成我的低级数据访问对象,我有一个业务逻辑层.表单是数据绑定到业务逻辑对象,尽管主表单使用缓存对象来最小化更常见的导航路径上的往返.UI 永远不会直接与数据库对话:始终通过UI - >业务逻辑 - >低级别 - >数据存储路径.

我大量使用的一个控件是TreeView,它充当视觉指南和短程导航工具.树已经大量定制图标,突出显示颜色,这是我最担心的移植控件.

是否有一个故事可能说服我继续进行转换(或者相反,等到微软接近从Windows窗体中拉出地毯)?

编辑:我在评论中被问到我有什么转换动机.我对未来的打样有些担心:我有500,000行代码,最初是ASP和VBScript.我们已经将功能随着时间推移到ASP.NET和C#,但仅在我们对代码进行更改时.好处是我们保持成本最小化,缺点是代码仍然是ASP和VBScript的一半.我担心Windows Forms应用程序出现类似的情况.

今天担心Windows Forms会消失吗?甚至没有接近它...但是应用程序正在从ASP和VBScript转移到ASP.NET和C#,已经有九年的历史了,并且可能在这十年内不会被替换(相反,它将会发展).桌面应用程序同样是一个具有多年历史的长期项目.

wpf winforms

14
推荐指数
4
解决办法
8204
查看次数

将Leksah调试器与使用readLn和类似程序的程序一起使用

我最近安装了Leksah(Windows 7 64位上的0.10.0.4),这对于Haskell来说似乎是一个有趣的IDE.但是,当使用它时用户输入程序时,我显然忽略了一些东西.

我有一个非常简单的

do
    printStr "Prompt: "
    x <- readLn
Run Code Online (Sandbox Code Playgroud)

阻止我的代码.当调试器访问readLn时,我希望能够在某处提供输入.但是,我找不到任何输入窗口.我一开始期望可以启用日志窗口,但我无法找到与程序交互的任何地方.在GHCi中运行一切都如预期的那样,所以我确定它不是代码.

此外,当我只执行"Package-> Run"时,在某些其他日志输出到达之前(例如进行重建),提示不会显示.

过去在Linux上使用Emacs和Haskell模式,我希望有一个更加用户友好的体验,所以我可以让一些Windows程序员参与Haskell主题.我错过了什么吗?

haskell windows-7 leksah

7
推荐指数
1
解决办法
905
查看次数

DotNetNuke模块在"编辑"模式下工作,但不适用于"视图":缓存问题?

我有一个DNN任务,只需运行一些Javascript来根据几个输入字段计算价格.这个模块在我们的生产网站上运行良好,但我们有一家公司为我们做了一个改善网站外观的模型,并且模块在这个新系统下失败了.(DNN 05.06.00(459)虽然之前已经是5.5了......但我还是徒劳地希望这是旧修订版中的一个错误.)

令人难以置信的是,当我登录DNN并以管理员身份使用编辑模式时,模块工作正常.在这种情况下,JavaScript的小片段加载很好并填充字段导致价格.

另一方面,我点击"查看"(或者更重要的是,如果我根本没有登录),页面会加载缓存副本.甚至更奇怪,我发现生成了\ Portals\2\Cache\Pages中的缓存文件,然后只使用了缓存数据.

加载缓存副本时,JavaScript不会出现(通常是通过Page.ClientScript.RegisterClientScriptBlock()创建的.另外,将数据发布到服务器的按钮不会执行任何服务器端代码(用调试器确认)但只是重新加载缓存的副本.

如果我手动删除\ Portals\2\Cache\Pages中的文件,那么一切正常,但我必须在每次加载页面后执行此操作:如果不这样做,只需加载上次重复生成的页面.

重置应用程序(通过UI或编辑web.config)不会更改此设置,并且从"主机设置"页面清除缓存实际上并不会清除这些缓存的页面.

我猜测编辑模式以某种方式绕过了缓存,但我已经关闭了网站上的所有缓存(这对于性能而言非常糟糕)并且缓存版本仍然被加载.

有没有人见过这样的东西?不应该清除缓存清除文件(我正在使用文件提供程序进行缓存)?如果用户回帖,即使缓存的页面也不应该返回服务器?

编辑:我应该指出权限似乎不是缓存目录中的问题... 其他页面缓存输出从此文件夹中删除,只是此页面有此问题.

编辑2:澄清我没有提供的一些设置和条件.首先,该模块在DNN 5.6.0下的生产中工作正常.在我们的测试环境中,咨询公司的更改失败了(仅在理论上改变了皮肤和页面布局:模块源本身验证为未更改).两者之间的所有缓存设置等都已经过相同的验证,我们只能在找不到问题的其他原因时将模块缓存设置为0和-1(并完全禁用测试站点的缓存).我已经在测试中的许多其他页面上看到了缓存正常工作:这个页面有一些导致问题的原因.

我们已经根据顾问的工作制定了一个可安装的皮肤,因为我怀疑它们已经以某种方式损坏了DNN安装(我认为数据库方面).

caching dotnetnuke module

5
推荐指数
1
解决办法
5905
查看次数

启动WinForm应用程序Aerosnaped Right Aligned

这应该是一个简单的问题,但是search-foo让我失望了.我的目标是检测我是在Aero(Vista或Windows 7)下运行并默认使用我的应用程序Aerosnap.(事实证明,我写的一个公司应用程序是由几乎所有人正确运行的,他们的Outlook向左拍摄.)

该应用程序是WinForms,我目前正在做

Width = Screen.PrimaryScreen.WorkingArea.Size.Width / 2;
Height = Screen.PrimaryScreen.WorkingArea.Size.Height;
Top = Screen.PrimaryScreen.WorkingArea.Top;
Left = Screen.PrimaryScreen.WorkingArea.Left + 
       Screen.PrimaryScreen.WorkingArea.Size.Width / 2;
Run Code Online (Sandbox Code Playgroud)

在我的表单的加载事件中.这很好用,除非他们使用WindowKey + Arrow,它就好像它只是一个正常位置的形式.这意味着WindowKey + Right在第一次按下时不执行任何操作,并且WindowKey + Left向左按下.这不是一个主要问题,但我更愿意,如果我可以指定一个窗口大小然后将应用程序捕捉到右侧,那么这些键的行为与任何其他应用程序一样.

我不确定这是可能的,以下是我找到的东西:

这些似乎表明没有可用的特殊AeroSnap消息.有人知道吗?

c# winforms aero-snap

5
推荐指数
1
解决办法
319
查看次数

DAO和Data Mapper之间有什么区别

DAO模式和Data Mapper模式之间有区别吗?DAO只是做Data Mapper的吗?

dao design-patterns data-access-layer data-mapping

4
推荐指数
1
解决办法
3540
查看次数