小编Ant*_*ean的帖子

如何将参数从父任务传递到Rake中的子任务?

我正在编写一个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)
  • 我可以将参数从父任务传递给子任务吗?
  • 有没有办法让子任务变为私有,所以不能独立调用它们?

ruby rake

13
推荐指数
1
解决办法
6876
查看次数

从Internet下载文件时分配的最佳内存缓冲区大小是多少?

从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)

.net c# download

13
推荐指数
2
解决办法
8970
查看次数

如何一次以编程方式运行多个Rake任务?

在命令行,我可以运行这样的多个任务

rake environment task1 task2 task3
Run Code Online (Sandbox Code Playgroud)

我该如何以编程方式执行此操作?我知道我可以运行这样的任务

Rake::Task['task1'].invoke
Run Code Online (Sandbox Code Playgroud)

ruby rake

13
推荐指数
1
解决办法
9551
查看次数

"字段初始值设定项不能引用非静态字段"在C#中意味着什么?

我不明白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)

c# delegates

12
推荐指数
2
解决办法
2万
查看次数

如何从MSBuild脚本更新XML属性?

我正在使用MSBuildMSBuild社区任务(使用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)

我试着替换fileNametarget

<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部分定义了自己的命名空间?


更新:声明名称空间的已发布答案不起作用.

xml msbuild msbuildcommunitytasks

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

使用IoC时,我对界面抽象感到困惑

我最近一直在尝试学习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中,我现在将界面视为仅映射到单个具体类的东西.假设,我如何将多个具体类映射到接口? 我一直在阅读你可以将多个接口映射到一个具体的类,但不是相反(除非这是上下文映射发挥作用的地方).

假设接口只映射到单个对象,何时应该创建接口而不是让对象绑定到自身? 无论哪种方式,当映射更改正确时,您将不得不更改同一段代码?


编辑:我标记了我做的答案,因为它帮助了我个人.这两条评论同样具有丰富的信息.

dependency-injection ninject ioc-container

12
推荐指数
2
解决办法
1600
查看次数

有没有人将NUnit与Visual Studio 2010集成?

有没有人将NUnit与Visual Studio集成?我正在尝试建立像这样的构建管道.但是,我对.NET很陌生,我仍然在理解它是如何工作的.NUnit + VS的互联网上有很多资源,我很困惑.

nunit visual-studio

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

为什么使用JpegBitmapDecoder的LongRunning任务(TPL)资源耗尽?

我们有一个托管的.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线程成为罪魁祸首的实际原因感到困惑.以下是我们对此的一些问题:

  1. 为什么选择执行任务的线程来自ThreadPool?如果线程终止,那么GC的资源是否应该随时间回收并返回操作系统,无论其来源如何?

  2. LongRunning任务和导致错误的JpegBitmapDecoder功能的组合有什么特别之处?

.net c# task-parallel-library

12
推荐指数
2
解决办法
2644
查看次数

在Windows上安装Bower on Vagrant需要什么权限?

在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)

windows node.js npm vagrant bower

12
推荐指数
1
解决办法
8573
查看次数

如何在C#WinForms应用程序中创建可编辑的配置设置?

我将配置值保存在app.config.我想创建一个WinForms应用程序,它显示表单中的所有AppSettings值.用户应该能够更改设置值并将其保存回app.config.

c# app-config winforms

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