我正在编写一个Rake脚本,其中包含带参数的任务.我想出了如何传递参数以及如何使任务依赖于其他任务.
task :parent, [:parent_argument1, :parent_argument2, :parent_argument3] => [:child1, :child2] do
# Perform Parent Task Functionalities
end
task :child1, [:child1_argument1, :child1_argument2] do |t, args|
# Perform Child1 Task Functionalities
end
task :child2, [:child2_argument1, :child2_argument2] do |t, args|
# Perform Child2 Task Functionalities
end
Run Code Online (Sandbox Code Playgroud)
从Internet下载文件时分配的最佳内存缓冲区大小是多少?有些样本说它应该是1K.好吧,我需要知道一般为什么呢?如果我们下载一个小型.PNG或大型的,有.AVI什么区别?
Stream remoteStream;
Stream localStream;
WebResponse response;
try
{
response = request.EndGetResponse(result);
if (response == null)
return;
remoteStream = response.GetResponseStream();
var localFile = Path.Combine(FileManager.GetFolderContent(), TaskResult.ContentItem.FileName);
localStream = File.Create(localFile);
var buffer = new byte[1024];
int bytesRead;
do
{
bytesRead = remoteStream.Read(buffer, 0, buffer.Length);
localStream.Write(buffer, 0, bytesRead);
BytesProcessed += bytesRead;
} while (bytesRead > 0);
}
Run Code Online (Sandbox Code Playgroud) 在命令行,我可以运行这样的多个任务
rake environment task1 task2 task3
Run Code Online (Sandbox Code Playgroud)
我该如何以编程方式执行此操作?我知道我可以运行这样的任务
Rake::Task['task1'].invoke
Run Code Online (Sandbox Code Playgroud) 我不明白C#中的这个错误
错误CS0236:字段初始值设定项无法引用非静态字段,方法或属性'Prv.DB.getUserName(long)'
对于以下代码
public class MyDictionary<K, V>
{
public delegate V NonExistentKey(K k);
NonExistentKey nonExistentKey;
public MyDictionary(NonExistentKey nonExistentKey_) { }
}
class DB
{
SQLiteConnection connection;
SQLiteCommand command;
MyDictionary<long, string> usernameDict = new MyDictionary<long, string>(getUserName);
string getUserName(long userId) { }
}
Run Code Online (Sandbox Code Playgroud) 我正在使用MSBuild和MSBuild社区任务(使用XMLUpdate和XMLMassUpdate)来更新我的Web的各个部分.但有一件事让我难过.如果我有:
<configuration>
<nlog throwExceptions="true" xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="file" xsi:type="File" fileName="${logDirectory}\SomeLog.log" layout="${message}"/>
</targets>
</nlog>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我试着替换fileName了target
<XmlUpdate XmlFileName="$(BuildDir)\Builds\%(Configuration.Identity)\_PublishedWebsites\Presentation\Web.config"
XPath="//configuration/nlog/targets/target[@fileName]"
Value="${logDirectory}\SomeLog_%(Configuration.Identity).log" />
Run Code Online (Sandbox Code Playgroud)
它报告无法找到任何要更新的内容,所以我的问题是我如何才能获得更新的文件名属性?
编辑:这可能是命名空间冲突的情况,因为NLog部分定义了自己的命名空间?
更新:声明名称空间的已发布答案不起作用.
我最近一直在尝试学习IoC,并根据以下代码提出几个问题:
public class WarriorModule : NinjectModule
{
public override void Load()
{
Bind<IWeapon>().To<Sword>();
Bind<Samurai>().ToSelf();
}
}
Run Code Online (Sandbox Code Playgroud)
我在掌握接口的新概念时遇到了麻烦.在我创建一个接口之前,例如IRunnable,实现该功能void Run().在IoC中,我现在将界面视为仅映射到单个具体类的东西.假设,我如何将多个具体类映射到接口? 我一直在阅读你可以将多个接口映射到一个具体的类,但不是相反(除非这是上下文映射发挥作用的地方).
假设接口只映射到单个对象,何时应该创建接口而不是让对象绑定到自身? 无论哪种方式,当映射更改正确时,您将不得不更改同一段代码?
编辑:我标记了我做的答案,因为它帮助了我个人.这两条评论同样具有丰富的信息.
有没有人将NUnit与Visual Studio集成?我正在尝试建立像这样的构建管道.但是,我对.NET很陌生,我仍然在理解它是如何工作的.NUnit + VS的互联网上有很多资源,我很困惑.
我们有一个托管的.Net/C#应用程序,可以创建TPL任务来对JPEG图像执行JPEG元数据编码.每个任务都使用TaskCreationOptions.LongRunning选项构建,例如,
Task task = new Task( () => TaskProc(), cancelToken, TaskCreationOptions.LongRunning );
Run Code Online (Sandbox Code Playgroud)
TaskProc()利用JpegBitmapDecoder和JpegBitmapEncoder类添加JPEG元数据并将新图像保存到磁盘.我们允许在任何时间最多激活2个此类任务,此过程应无限期地继续.
执行上述操作一段时间后,我们得到了足够的存储空间可用于在尝试创建JpegBitmapDecoder类的实例时处理此命令异常:
System.ComponentModel.Win32Exception(0x80004005的):没有足够的存储可在MS.Win32.UnsafeNativeMethods.RegisterClassEx(WNDCLASSEX_D wc_d)处理此命令
在MS.Win32.HwndWrapper..ctor(的Int32 classStyle,的Int32风格的Int32扩展风格,INT3 2×,的Int32 Y,的Int32宽度,高度的Int32,字符串名称,IntPtr的父,HwndWrapperHoo K []钩子)在System.Windows.Threading.Dispatcher..ctor()在System.Windows.Threading.Dispatcher.get_CurrentDispatcher()在System.Windows.Media.Imaging.BitmapDecoder..ctor(流bitmapStream,BitmapC reateOptions createOptions,BitmapCacheOption cacheOption,的Guid expectedClsId)在System.Windows.Media.Imaging.JpegBitmapDecoder..ctor(流bitmapStream,位mapCreateOptions createOptions,BitmapCacheOption cacheOption)
仅当我们使用JpegBitmapDecoder添加元数据时才会发生错误.换句话说,如果任务只是编码并将Bitmap图像保存到文件,则不会出现任何问题.使用Process Explorer,Process Monitor或其他诊断工具时,没有发现任何明显的事实.根本没有观察到线程,内存或手柄泄漏.发生此类错误时,不会启动任何新应用程序,例如记事本,文字等.一旦我们的应用程序终止,一切都会恢复正常.
LongRunning的任务创建选项在MSDN中定义为指定任务将是长时间运行的粗粒度操作.它向TaskScheduler提供了一个提示,即可以保证超额订阅.这意味着选择运行任务的线程可能不是来自ThreadPool,即,它将为任务的目的而创建.其他任务创建选项将导致为任务选择ThreadPool线程.
经过一段时间的分析和测试,我们将任务创建选项更改为除LongRunning之外的任何其他选项,例如PreferFairness.根本没有对代码进行任何其他更改.这"解决了"问题,即不再耗尽存储错误.
我们对LongRunning线程成为罪魁祸首的实际原因感到困惑.以下是我们对此的一些问题:
为什么选择执行任务的线程来自ThreadPool?如果线程终止,那么GC的资源是否应该随时间回收并返回操作系统,无论其来源如何?
LongRunning任务和导致错误的JpegBitmapDecoder功能的组合有什么特别之处?
在Vagrant上运行精确32 Ubuntu Box的Windows 7计算机上通过NPM安装Bower时,我一直遇到此错误.我尝试了每个命令组合,总是得到相同或非常相似的错误
使用sudo在本地,全局安装,不使用sudo等.
...
npm ERR! Error: EPERM, open '/home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js'
npm ERR! { [Error: EPERM, open '/home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js']
npm ERR! errno: 50,
npm ERR! code: 'EPERM',
npm ERR! path: '/home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Linux 3.2.0-23-generic-pae
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "-g" "bower" "--no-bin-links"
npm ERR! cwd /home/vagrant
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.24
npm ERR! path /home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js
npm ERR! code EPERM …Run Code Online (Sandbox Code Playgroud) 我将配置值保存在app.config.我想创建一个WinForms应用程序,它显示表单中的所有AppSettings值.用户应该能够更改设置值并将其保存回app.config.