小编mar*_*ark的帖子

如何使用msbuild项目文件本身内的不同参数两次调用相同的msbuild目标

我有以下msbuild代码:

  <PropertyGroup>
    <DirA>C:\DirA\</DirA>
    <DirB>C:\DirB\</DirB>
  </PropertyGroup>

  <Target Name="CopyToDirA"
          Condition="Exists('$(DirA)') AND '@(FilesToCopy)' != ''"
          Inputs="@(FilesToCopy)"
          Outputs="@(FilesToCopy -> '$(DirA)%(Filename)%(Extension)')">
    <Copy SourceFiles="@(FilesToCopy)" DestinationFolder="$(DirA)" />
  </Target>

  <Target Name="CopyToDirB"
          Condition="Exists('$(DirB)') AND '@(FilesToCopy)' != ''"
          Inputs="@(FilesToCopy)"
          Outputs="@(FilesToCopy -> '$(DirB)%(Filename)%(Extension)')">
    <Copy SourceFiles="@(FilesToCopy)" DestinationFolder="$(DirB)" />
  </Target>

  <Target Name="CopyFiles" DependsOnTargets="CopyToDirA;CopyToDirB"/>
Run Code Online (Sandbox Code Playgroud)

因此,调用目标CopyFiles会将相关文件复制到,$(DirA)并且$(DirB)只要它们尚未存在并且是最新的.

但目标CopyToDirACopyToDirB看起来相同,除了一个副本$(DirA)和另一个 - 到$(DirB).是否有可能将它们统一到一个首先调用的目标中$(DirA)然后用$(DirB)

谢谢.

msbuild msbuild-task

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

如何删除nhibernate中只有id和type的实体?

我想知道如何使用NHibernate 2.1删除一个只具有其ID和类型的实体(如映射中)?

nhibernate nhibernate-2

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

希望.NET泛型可以继承其中一个泛型参数类型的理由是什么?

这篇文章是在延续这一个.

我试图了解我是否是唯一一个错过并需要.NET泛型类型的人才能继承其通用参数类型的人.

挑战是收​​集有利于此功能的令人信服的理由,或者,知道没有.

我有理由把它作为这个问题的答案 - 见下文.

我要求那里的人添加他们作为这篇文章的答案.

如果你不同意这个功能是有用的或者没有充分的理由支持 - 请不要在这里发布任何内容,尽管你可以在已经启动它的原始帖子中这样做 - 在这里.

PS

一些C++模式在.NET中无关紧要.例如,在他的优秀书籍Modern C++ Design中, Andrei Alexandrescu描述了如何创建在编译时评估的类型列表.当然,这种模式与.NET无关,如果我需要一个类型列表,我只需创建List<Type>并用类型填充它.因此,让我们尝试提出与.NET框架相关的原因,而不是盲目地将C++编码技术转换为C#.

PPS

当然,这个讨论严格来说是学术性的.即使有问题的一百个令人信服的理由浮出水面,它也不会被实施.

.net generics

16
推荐指数
2
解决办法
1571
查看次数

如何在没有装箱的情况下将通用类型T的值转换为double?

想象一下以下简单的代码:

public void F<T>(IList<T> values) where T : struct
{
  foreach (T value in values)
  {
    double result;
    if (TryConvertToDouble((object)value, out result))
    {
      ConsumeValue(result);
    }
  }
}

public void ConsumeValue(double value)
{
}
Run Code Online (Sandbox Code Playgroud)

上面代码的问题是转换为对象,这导致在循环中装箱.

有没有办法实现相同的功能,即为ConsumeValue提供所有值而不需要在foreach循环中使用装箱?注意,F必须是通用方法.

只要在循环外执行一次,我就可以使用昂贵的准备代码.例如,如果需要发出一个奇特的动态方法,那么只做一次就可以了.

编辑

T保证是某种数字类型或bool.

动机.想象一下元数据驱动的应用程序,其中代理报告数据流,其中数据项类型是基于数据流元数据动态发出的.想象一下,还有规范化引擎,它知道根据某种算法规范化数字数据流.传入的数字数据流的类型仅在运行时是已知的,并且可以指向该数据类型的通用方法.然而,规范化器期望双倍并产生双精度.这是一个非常高级别的描述,请不要深入研究.

EDIT2

关于演员要加倍.实际上我们有一个方法,使用以下签名转换为double:

bool TryConvertToDouble(object value, out double result);
Run Code Online (Sandbox Code Playgroud)

我应该首先在示例中使用它,但我想节省空间并编写一些不起作用的东西.现在修好了.谢谢你的注意.

EDIT3

伙计们,目前的实施确实包装了价值观.即使我没有关于它的性能惩罚的探查者的判断(如果有的话),我仍然有兴趣知道是否有没有装箱的解决方案(并且没有转换为字符串).让我称之为纯粹的学术兴趣.这真的让我感兴趣,因为在C++中使用模板这样的东西是微不足道的,但是,当然,我还没有开始关于什么是更好的.NET泛型或C++模板的另一个愚蠢和毫无意义的论点.请忽略这最后一句话.

EDIT4

感谢/sf/users/18721/提供了答案.实际上,我已经使用他的代码示例编写了一个这样的简单类:

public static class Utils<T>
{
  private static class ToDoubleConverterHolder
  {
    internal static Func<T, double> Value = EmitConverter();

    private static Func<T, double> EmitConverter()
    {
      ThrowIfNotConvertableToDouble(typeof(T));

      var method …
Run Code Online (Sandbox Code Playgroud)

.net

15
推荐指数
2
解决办法
7987
查看次数

如何使用JAX-RS提供静态内容?

我有一个使用JAX-RS Restlet扩展实现的自托管JAX-RS REST服务.

现在我必须提供静态内容,我想知道如何使用JAX-RS.注意,我不知道编译时的物理目录结构.所以,给出一个像这样的URL

http://bla-bla:8182/static/yaba/daba/doo.png
Run Code Online (Sandbox Code Playgroud)

$(ROOT)/yaba/daba/doo.png必须返回该文件,$(ROOT)静态内容根目录在哪里.

是否可以使用纯JAX-RS进行操作?

谢谢.

编辑

在编译时已知:

  • 静态内容根文件夹的文件系统路径
  • 用于引用静态内容根文件夹的HTTP URL

编译时未知:

  • 根文件夹的实际内容 - 有多少文件,文件类型,目录结构.

java rest jax-rs restlet

15
推荐指数
2
解决办法
7361
查看次数

如何在mongo中有效地通过查询删除文档?

我有一个查询,它选择要删除的文档.现在,我手动删除它们(使用python):

for id in mycoll.find(query, fields={}):
  mycoll.remove(id)
Run Code Online (Sandbox Code Playgroud)

这似乎不是非常有效.有没有更好的办法?

编辑

好的,我遗憾地忘记提及查询细节,因为它很重要.这是完整的python代码:

def reduce_duplicates(mydb, max_group_size):
  # 1. Count the group sizes
  res = mydb.static.map_reduce(jstrMeasureGroupMap, jstrMeasureGroupReduce, 'filter_scratch', full_response = True)
  # 2. For each entry from the filter scratch collection having count > max_group_size
  deleteFindArgs = {'fields': {}, 'sort': [('test_date', ASCENDING)]}
  for entry in mydb.filter_scratch.find({'value': {'$gt': max_group_size}}):
    key = entry['_id']
    group_size = int(entry['value'])
    # 2b. query the original collection by the entry key, order it by test_date ascending, limit to the group size …
Run Code Online (Sandbox Code Playgroud)

mongodb

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

所以DOM scrollIntoView对齐顶部/底部,但是左/右呢?

我想水平滚动给定的元素.我找到的唯一方法是使用ScrollIntoView DOM方法,它允许将元素的底部与视图底部或顶部对齐 - 与视图顶部对齐.

但是,如果元素相对于Y轴是正常的,我只想水平滚动它怎么办?如何将左侧与左侧视图或右侧视图右侧对齐?

编辑

这是更多的背景.我有一个带有水平滚动条的YUI表.我希望以编程方式将其滚动到某个TD节点.我不认为window.scrollTo对我有任何帮助,因为滚动条位于div元素上,而不是整个页面上.

EDIT2

原来有一个重复的SO问题,答案正确 - 如何用自己的滚动条以编程方式滚动div?

投票关闭我的.

html javascript dom horizontal-scrolling

15
推荐指数
1
解决办法
9253
查看次数

在可打印版本的html页面上删除输入占位符

我有一个带输入字段的表单.每个输入字段都有一个占位符属性.还有一个链接显示同一表单的可打印版本.

我的问题是,如果我保持占位符属性不变并且输入字段为空,则实际打印占位符,这不是很好.

我正在寻找一种解决这种不幸行为的方法.现在,我唯一能想到的是在javascript中遍历DOM并在给出可打印版本时删除所有占位符属性.当然,在恢复到正常页面视图时,也必须恢复占位符属性.

这并不难,但也不是很优雅.我想知道是否有更好的解决方案.

html javascript printing placeholder html-input

15
推荐指数
1
解决办法
3073
查看次数

使用InstallUtil安装具有启动参数的Windows服务

我使用InstallUtil来安装我的服务,我只是无法弄清楚如何为它指定启动参数!

这是我的Installer子类:

[RunInstaller(true)]
public class ServerHostInstaller : Installer
{
  private ServiceInstaller m_serviceInstaller;
  private ServiceProcessInstaller m_serviceProcessInstaller;
  private static string s_usage = "Usage:\ninstallutil /i /username=<user_name> /password=<user_password> NCStub.Server.Host.exe";

  public ServerHostInstaller()
  {
    m_serviceInstaller = new ServiceInstaller();
    m_serviceInstaller.ServiceName = Program.ServiceName;
    m_serviceInstaller.DisplayName = Program.ServiceName;
    m_serviceInstaller.StartType = ServiceStartMode.Automatic;

    m_serviceProcessInstaller = new ServiceProcessInstaller();
    m_serviceProcessInstaller.Account = ServiceAccount.User;

    Installers.Add(m_serviceInstaller);
    Installers.Add(m_serviceProcessInstaller);
  }

  public override void Install(IDictionary stateSaver)
  {
    base.Install(stateSaver);

    string userName = this.Context.Parameters["username"];
    if (userName == null)
    {
      Console.WriteLine(s_usage);
      throw new InstallException("Missing parameter 'username'");
    }

    string userPass = this.Context.Parameters["password"];
    if (userPass …
Run Code Online (Sandbox Code Playgroud)

.net c# windows-services installutil

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

是否有JavaScript功能可以让Google Chrome进入调试器?

我正在寻找类似于Debugger.Launch().NET的东西,它以编程方式打入调试器.

我不是在寻找一种跨浏览器的方式,只需谷歌Chrome就足够了.

javascript

14
推荐指数
1
解决办法
2257
查看次数