我的情况
在C#项目中我正在研究我们有一个相当大的解决方案(80多个项目).现在重建时间为5分钟+使用Visual Studio 2008中的 MSBuild确实变得非常困难.
在我上周做的分析中,我发现我的构建时间花费如下:
将文件复制到项目并将其重新复制到依赖于它的项目(CopyToLocal)等(60%)
调用postbuild进行反编译/编译.(20%)
进行实际编译等(20%)
除了'普通'项目bin\debug文件夹输出也被复制到外部目录以设置主'加载'程序.主程序结构有点像这样:
\loader\bin\loader.exe
\loader\plugin\plugin1\plugin1.dll
\loader\plugin\plugin1\somedependency.dll
Run Code Online (Sandbox Code Playgroud)
我做了什么
为了让事情变得更快,我想到了以下几点:
将所有文件复制到一个大bin目录,不要使用CopyTolocal.我不喜欢这个,因为我们不能再使用相同DLL文件的不同版本,而且我的bin目录变得非常混乱.
对MSBuild使用并行性(/ m).这对构建时间的帮助很小.
尝试减少项目之间的依赖关系,这当然是一件好事.
投资硬件.我发现了一些关于固态驱动器的研究,但这似乎并不乐观.
我的问题
我还注意到,当我对依赖树的根目录下的项目进行更改时,所有内容都会重建.即使改变仅在"私人"部分,并且项目的界面没有改变.
MSBuild是否使用依赖项目的时间戳来确定项目是否需要重建?
这可以改为不同的条件吗?例如,文件的校验和?
除了这个特定的建议,我一定会感谢所有建议,以使构建时间更快.
我正在使用linq来向Nhibernate发出一些选择查询到数据库.
我的问题是,我怎么知道,Fluent NHibernate生成的查询?
在 C# 中,我有以下类,它编译得很好:
class CustomItem
{
}
class CustomList : IList<CustomItem>
{
public CustomItem this[int index]
{
get { return null; }
set { throw new NotImplementedException(); }
}
public void CopyTo(CustomItem[] array, int arrayIndex)
{
}
public int Count { get { return 10; } }
public int IndexOf(CustomItem item) { throw new NotImplementedException(); }
public void Insert(int index, CustomItem item) { throw new NotImplementedException(); }
public void RemoveAt(int index) { throw new NotImplementedException(); }
public void Add(CustomItem item) …
Run Code Online (Sandbox Code Playgroud) 我有一个UserControl,其中包含一些布尔属性.如果没有在.aspx页面中显式设置,我希望它们默认设置为true,或者至少强制它们在无法设置默认值时声明.我知道有一种方法可以做到这一点,因为许多控件都需要在您尝试运行时破坏应用程序并且未声明它们的属性.
我该怎么做呢?
例:
<je:myControl runat="server" id="myControl" showBox="False">
Run Code Online (Sandbox Code Playgroud)
如果showBox不在此声明之内,我希望系统中断或将默认值设置为"true".
谢谢!
我需要转换<font size="10">为px.
仅示例(不正确):<font size="10">相当于12px.
是否有任何公式或表转换转换<font size="10">为px?
我正在寻找与ruby中相同的java功能:
SystemTimer.timeout_after(30.seconds)确实做了一些事情
我可以通过分叉线程然后在一段时间后杀死它来实现这一点,但有更简单的方法吗?
我用Firefox和firebug插件开发了我的网站,但是当我将它部署到其他浏览器(IE/Chrome)时,控制台窗口出现在屏幕的底部(非常烦人).
我怎么能禁用它?为什么会出现?
迦特
我的目标是了解Java中的并发性.目前我的知识水平很差.我很确定我知道"易变"的意思.我有点知道"同步"意味着什么.有时.我从来没有编写启动线程或管理它们的代码.在这个问题之外,我有信心并且在家里使用Java工作.
我正在寻找一个小项目或程序的建议,这需要理解并发性才能正确有效地工作.