我有以下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)
只要它们尚未存在并且是最新的.
但目标CopyToDirA
和CopyToDirB
看起来相同,除了一个副本$(DirA)
和另一个 - 到$(DirB)
.是否有可能将它们统一到一个首先调用的目标中$(DirA)
然后用$(DirB)
?
谢谢.
我想知道如何使用NHibernate 2.1删除一个只具有其ID和类型的实体(如映射中)?
这篇文章是在延续这一个.
我试图了解我是否是唯一一个错过并需要.NET泛型类型的人才能继承其通用参数类型的人.
挑战是收集有利于此功能的令人信服的理由,或者,知道没有.
我有理由把它作为这个问题的答案 - 见下文.
我要求那里的人添加他们作为这篇文章的答案.
如果你不同意这个功能是有用的或者没有充分的理由支持 - 请不要在这里发布任何内容,尽管你可以在已经启动它的原始帖子中这样做 - 在这里.
PS
一些C++模式在.NET中无关紧要.例如,在他的优秀书籍Modern C++ Design中, Andrei Alexandrescu描述了如何创建在编译时评估的类型列表.当然,这种模式与.NET无关,如果我需要一个类型列表,我只需创建List<Type>
并用类型填充它.因此,让我们尝试提出与.NET框架相关的原因,而不是盲目地将C++编码技术转换为C#.
PPS
当然,这个讨论严格来说是学术性的.即使有问题的一百个令人信服的理由浮出水面,它也不会被实施.
想象一下以下简单的代码:
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) 我有一个使用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进行操作?
谢谢.
编辑
在编译时已知:
编译时未知:
我有一个查询,它选择要删除的文档.现在,我手动删除它们(使用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) 我想水平滚动给定的元素.我找到的唯一方法是使用ScrollIntoView DOM方法,它允许将元素的底部与视图底部或顶部对齐 - 与视图顶部对齐.
但是,如果元素相对于Y轴是正常的,我只想水平滚动它怎么办?如何将左侧与左侧视图或右侧视图右侧对齐?
编辑
这是更多的背景.我有一个带有水平滚动条的YUI表.我希望以编程方式将其滚动到某个TD节点.我不认为window.scrollTo
对我有任何帮助,因为滚动条位于div元素上,而不是整个页面上.
EDIT2
原来有一个重复的SO问题,答案正确 - 如何用自己的滚动条以编程方式滚动div?
投票关闭我的.
我有一个带输入字段的表单.每个输入字段都有一个占位符属性.还有一个链接显示同一表单的可打印版本.
我的问题是,如果我保持占位符属性不变并且输入字段为空,则实际打印占位符,这不是很好.
我正在寻找一种解决这种不幸行为的方法.现在,我唯一能想到的是在javascript中遍历DOM并在给出可打印版本时删除所有占位符属性.当然,在恢复到正常页面视图时,也必须恢复占位符属性.
这并不难,但也不是很优雅.我想知道是否有更好的解决方案.
我使用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) 我正在寻找类似于Debugger.Launch()
.NET的东西,它以编程方式打入调试器.
我不是在寻找一种跨浏览器的方式,只需谷歌Chrome就足够了.
.net ×3
javascript ×3
html ×2
c# ×1
dom ×1
generics ×1
html-input ×1
installutil ×1
java ×1
jax-rs ×1
mongodb ×1
msbuild ×1
msbuild-task ×1
nhibernate ×1
nhibernate-2 ×1
placeholder ×1
printing ×1
rest ×1
restlet ×1