小编Dav*_*ave的帖子

有没有办法在批处理文件中指出最后n个参数?

在以下示例中,我想从父批处理文件中调用子批处理文件,并将所有剩余参数传递给子代.

C:\> parent.cmd child1 foo bar
C:\> parent.cmd child2 baz zoop
C:\> parent.cmd child3 a b c d e f g h i j k l m n o p q r s t u v w x y z
Run Code Online (Sandbox Code Playgroud)

在parent.cmd中,我需要从参数列表中删除%1,并仅将剩余参数传递给子脚本.

set CMD=%1
%CMD% <WHAT DO I PUT HERE>
Run Code Online (Sandbox Code Playgroud)

我已经调查过使用SHIFT和%*,但这不起作用.当SHIFT将位置参数向下移动1时,%*仍然指向原始参数.

有人有主意吗?我应该放弃并安装Linux吗?

parameters shell cmd

40
推荐指数
4
解决办法
3万
查看次数

如何使用MSBuild将文件复制到另一个目录?

我正在尝试将$(TargetDir)中的几个文件复制到另一个文件夹(例如C:\ BinCache),但无论出于何种原因我都无法让MSBuild停止抱怨.

  <Target Name="AfterBuild">
    <Copy SourceFiles="$(TargetDir)\*.*"
          DestinationFolder="C:\BinCache" />
  </Target>
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

编辑:解决方案是使用CreateItem任务.据推测,Visual Studio 2008消除了这种限制.谢谢斯科特!

<Target Name="AfterBuild">
  <CreateItem Include="$(TargetDir)\*.*">
    <Output TaskParameter="Include" ItemName="SourceFiles" />
  </CreateItem>
  <Copy SourceFiles="@(SourceFiles)" DestinationFolder="C:\BinCache" />  
</Target>
Run Code Online (Sandbox Code Playgroud)

msbuild visual-studio-2005 copy

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

使用基于DLR的语言而不是C#进行脚本编写任务的原因?

我正在考虑将脚本语言嵌入到我的一个软件项目中,并确定了两个选项:在运行时通过CodeDOM编译C#并嵌入基于DLR的脚本语言.这两个选项都可以让我完全访问.NET Framework.

我将编写脚本的操作是用户定义的DataRow转换和一组导致修改后的DataRow的元数据.我希望这些转换可以组合并经常调用.当然,我希望最终用户能够提供和修改变换.

考虑到这一工作量,使用一种方法比另一种方法有明显的优势吗?

c# scripting ironpython dynamic-language-runtime

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

为什么`svn blame Foo.cs`返回的所有行都是空白的?

我的Subversion存储库中有一个名为"Foo.cs"的文件.当我运行该命令时svn blame Foo.cs,输出看起来像这样:

1000 dave 
1000 dave
2000 dave
2000 dave
9999 dave
1000 dave
9999 dave
Run Code Online (Sandbox Code Playgroud)

我唯一能想到的是,从修订版1000-9000开始,Foo.cs将"svn:mime-type"属性设置为"application/octet-stream".但是,由于r9000 Foo.cs没有这样的属性,因为它(并且一直是)一个文本文件.

此外,我已经尝试使用svn blame Foo.cs --force没有成功.

有谁知道如何解决这个问题?

编辑:在r1000,历史被截断(svn log Foo.cs不报告任何早于此的内容)因为分支被移动到存储库中的不同位置而不是使用svn mv.但是,很难想象这是问题的原因,因为它svn blame可以处理仓库中的每个其他文件.

svn binary properties

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

Visual Studio调试器不会在文件名中带有"(反引号)"的文件中加载符号.有谁能解释一下?

我在Visual Studio 2005中调试了一些代码,当时我注意到IDE没有在特定的泛型类中遇到断点.我可以手动进入该类,但悬停在引用上时显示的工具提示只包含内存地址而不是普通的友好工具提示.

事实证明,问题是由文件名(!)引起的.具体来说,当文件名包含`(反引号,反引号)时,调试器将不会加载该文件的符号.解决方法是重命名该文件.

我首先使用反引号来表示泛型类型的基数:

  • Foo.cs包含非泛型类型(例如Foo)
  • Foo`1.cs包含一个带有单个类型参数的泛型类型(例如Foo <T>)
  • Foo`2.cs包含一个带有两个类型参数的泛型(例如Foo <T,U>)

这个错误(是吗?)也发生在Visual Studio 2008中.

谁能解释这种行为?

c# debugging visual-studio

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

如何从动态加载的程序集中加载包含嵌套类型的泛型类型?

在加载到使用当前的AppDomain的组件Assembly.LoadFrom,我有以下代码:

[TypeConverter(typeof(EnumConverter<Shapes>))]
public enum Shapes
{
  Triangle,
  Square,
  Circle
}
Run Code Online (Sandbox Code Playgroud)

通用EnumConverter <T>在通过调用Assembly.GetEntryAssembly()返回的程序集中定义.当我在运行时读取TypeConverter属性时,我得到的类型的全名如下所示:

MyAssembly.EnumConverter`1[[MyDynamicAssembly.Shapes, MyDynamicAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
Run Code Online (Sandbox Code Playgroud)

但是,当我在字符串上调用Type.GetType()时,它返回null.我希望能够获得System.Type的实例.还要注意的是MyDynamicAssembly不是由Reflection.Emit的产生(在MSDN文章中指出在这里).

此代码是使用.NET Framework 2.0在Visual Studio 2005上生成的.

有没有人找到这个bug /限制的解决方法?它是否已在3.5中修复?

.net c# generics assemblies

3
推荐指数
1
解决办法
2629
查看次数

在公共API中传达字符串参数的目的的最佳方法是什么?

根据Microsoft .NET 2.0中使用字符串的新建议中发布的指南,字符串中的数据可能表现出以下类型的行为之一:

  1. 非语言标识符,其中字节完全匹配.
  2. 一种非语言标识符,其中大小写无关紧要,尤其是存储在大多数Microsoft Windows系统服务中的一段数据.
  3. 与文化无关的数据仍具有语言相关性.
  4. 需要当地语言习俗的数据.

鉴于此,我想知道在公共API中传达字符串参数的最佳方式.我无法在框架设计指南中找到答案.

请考虑以下方法:

   f(string this_is_a_linguistic_string)
   g(string this_is_a_symbolic_identifier_so_use_ordinal_compares)
Run Code Online (Sandbox Code Playgroud)

变量命名和XML文档是我能做的最好的吗?我可以用某种方式使用属性来标记字符串的要求吗?

现在考虑以下情况:

   h(Dictionary<string, object> dictionary)
Run Code Online (Sandbox Code Playgroud)

请注意,字典实例是由调用者创建的.如何通知被调用者期望字典持有的IEqualityComparer <string>对象执行,例如,不区分大小写的序数比较?

c# frameworks

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