我有一个CustomAction作为MSI的一部分.
它必须作为域帐户运行,该帐户也是本地Administrators帐户的成员.
它不能使用NoImpersonate标志将自定义操作作为NT Authority\System运行,因为它不会访问网络资源.
在启用了UAC的Vista/2008上,如果NoImpersonate处于关闭状态,则它将作为执行用户运行,但具有非特权令牌,并且无法访问本地资源,例如.installState.请参阅UAC架构
任何人都知道一种方法
强制MSI使用提升的令牌运行,就像从提升的命令提示符运行一样?
强制CustomAction运行提升(清单中的requireAdministrator似乎不起作用)?
如果启用了UAC并且是否未升级并且如果出现警告或取消安装,请确定?
您可以使用BindingRedirect将YourAssembly.dll 1.1.0.0重定向到1.2.0.0.
有没有人知道如果程序集名称不同,是否可以这样做.
例如
YourAssembly1.dll(v1.1)重定向到YourAssembly2.dll(v2.8)
HTML5提供自动URL验证: -
<form>
<input type="url" name="someUrl">
</form>
Run Code Online (Sandbox Code Playgroud)
这将无法验证没有协议前缀的URL - 例如,stackoverflow.com
在http://stackoverflow.com
通过时将失败.
如果还没有协议,如何自动将http://添加到URL?
我可以添加一个onblur事件处理程序,但在验证事件之前有更好的方法吗?
这应该是一个容易的问题,但......
我需要在C#中格式化显示(字符串)的货币
有问题的货币将有自己的规则,例如要使用的符号以及该符号是否应该在价值之前(例如10美元)或之后(例如10₫是越南盾).
但数字的格式取决于用户本地,而不是货币.
例如
1.234,56 ? should be displayed to a user in Vietnam but
1,234.56 ? should be displayed to a user in the US
Run Code Online (Sandbox Code Playgroud)
(格式化为代码,因此很容易看出它们之间的区别,和.)
所以代码就像
Double vietnamTotal = 1234.56;
return vietnamTotal.ToString("c");
Run Code Online (Sandbox Code Playgroud)
将无法工作,因为它将使用用户(或更准确的CultureInfo.CurrentCulture)区域设置格式和货币,所以你会得到$ 1,123.56之类的东西 - 正确使用,和.但错误的符号.
Double vietnamTotal = 1234.56;
CultureInfo ci = new CultureInfo(1066); // Vietnam
return vietnameTotal.ToString("c",ci));
Run Code Online (Sandbox Code Playgroud)
会给1.234,56₫ - 正确的符号,错误的使用,和.对于当前用户.
这篇文章提供了有关正确的事情的更多细节,但没有提供如何做到这一点.
我错过了隐藏在框架中的明显方法?
我有一个结构,持有3个整数的三维坐标.在测试中,我将一个包含100万个随机点的List <>组合在一起,然后将二进制序列化用于内存流.
内存流大约为21 MB - 这似乎非常低效,因为1000000点*3个coords*4个字节应该在最小11MB时出现
它在我的测试台上也需要约3秒钟.
有什么改善性能和/或尺寸的想法?
(如果有帮助,我不必保留ISerialzable接口,我可以直接写入内存流)
编辑 - 从下面的答案我已经把一个序列化摊牌比较BinaryFormatter,'原始'BinaryWriter和Protobuf
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using ProtoBuf;
namespace asp_heatmap.test
{
[Serializable()] // For .NET BinaryFormatter
[ProtoContract] // For Protobuf
public class Coordinates : ISerializable
{
[Serializable()]
[ProtoContract]
public struct CoOrd
{
public CoOrd(int x, int y, int z)
{
this.x = x;
this.y = y;
this.z = z;
}
[ProtoMember(1)]
public int x;
[ProtoMember(2)]
public int y; …
Run Code Online (Sandbox Code Playgroud) 随着你的发展,你经常使用像
throw new NotImplementedException("Finish this off later")
Run Code Online (Sandbox Code Playgroud)
要么
// TODO - Finish this off later
Run Code Online (Sandbox Code Playgroud)
作为一个占位符,提醒你完成一些事情 - 但这些可能会错过并错误地在发布中结束.
你可以用类似的东西
#if RELEASE
Finish this off later
#endif
Run Code Online (Sandbox Code Playgroud)
所以它不会在Release版本中编译 - 但是有更优雅的方式吗?
(目前仅适用于Chrome,因为大多数浏览器尚未为输入类型="日期"实现日期选择器)
在下面的示例中,MyDate以具有当前日期的Date对象开始,但日期输入(它希望其格式为格式为YYYY/MM/DD的字符串)不会选择此项.
一旦你在选择器中选择了一个日期,MyDate就会变成上面格式的字符串.
如何绑定这个,以便MyDate保持javascript日期并由输入控件正确解释?
见http://jsfiddle.net/LLkC4/3/: -
<input data-bind="value : MyDate" type="date">
<hr>
<span data-bind="html: log" />
<script>
var viewModel = {
MyDate : ko.observable(new Date()),
log : ko.observable(""),
logDate : function () {
this.log(this.log() + this.MyDate() + " : " +
typeof(this.MyDate()) + "<br>");
}
};
viewModel.MyDate.subscribe(function (date) {
viewModel.logDate();
});
ko.applyBindings(viewModel);
viewModel.logDate()
</script>
Run Code Online (Sandbox Code Playgroud) 可能重复:
接口与基类
通常可以看到使用Interfaces实现的存储库模式
public interface IFooRepository
{
Foo GetFoo(int ID);
}
public class SQLFooRepository : IFooRepository
{
// Call DB and get a foo
public Foo GetFoo(int ID) {}
}
public class TestFooRepository : IFooRepository
{
// Get foo from in-memory store for testing
public Foo GetFoo(int ID) {}
}
Run Code Online (Sandbox Code Playgroud)
但你可以使用抽象类同样地做到这一点.
public abstract class FooRepositoryBase
{
public abstract Foo GetFoo(int ID);
}
public class SQLFooRepository : FooRepositoryBase
{
// Call DB and get a foo
public override Foo GetFoo(int ID); …
Run Code Online (Sandbox Code Playgroud) 鉴于: -
[XmlRoot("Book")]
public class Book
{
[XmlAttribute]
public string Title;
[XmlElement]
public string Publisher;
[XmlElement]
public string PublisherReference;
}
Run Code Online (Sandbox Code Playgroud)
当序列化为XML时会给出
<Book Title="My Book">
<Publisher>Some Publisher</Publisher>
<PublisherReference>XYZ123</PublisherReference>
</Book>
Run Code Online (Sandbox Code Playgroud)
我如何将PublisherReference作为Publisher的属性 - 例如
<Book Title="My Book">
<Publisher Reference="XYZ123">Some Publisher</Publisher>
</Book>
Run Code Online (Sandbox Code Playgroud) 显然,Microsoft.WindowsAzure.CloudConfigurationManager.GetSettings将首先查看ServiceConfiguration.*.cscfg,然后回退到web.config和app.config.
但是 - 这应该是web/app .config中的格式?
例如,Microsoft.WindowsAzure.CloudConfigurationManager.GetSettings("Foo")
要从app.config中获取XML的样子是什么?
c# ×7
.net ×4
html5 ×2
architecture ×1
azure ×1
generics ×1
javascript ×1
knockout.js ×1
uac ×1