Visual Studio一直让我烦恼,因为(据我所知)你不能先创建一个解决方案,然后再添加新的/现有的项目.我知道如何创建解决方案的唯一方法是创建项目并为其指定解决方案名称.
那么,有没有办法从visual studio(任何版本)中的空白解决方案(.sln)开始?
我自己和我的团队在增加程序集版本号时非常可怕,我们经常发送1.0.0.0版本的程序集.显然,这会引起很多麻烦.
我们通过CI平台实现了更好的实践,我真的想将其设置为自动增加assemblyinfo.cs文件中的值,以便使用该程序集中的代码更改自动更新程序集的版本.
我之前已经设置(在我们找到Hudson之前)通过任一msbuild或者命令行(不记得)增加值的方法,但是使用Hudson,这将更新SVN存储库并触发另一个构建.由于Hudson每小时轮询SVN,这将导致缓慢的无限循环.
让Hudson增加版本号是一个坏主意吗?什么是另一种方法呢?
理想情况下,我的解决方案标准是:
assemblyinfo.cs之前增加内部版本号在我脑海中解决这个问题,我可以通过批处理文件/命令轻松地提出大部分解决方案,但是我的所有想法都会导致Hudson在下次扫描时触发新的构建.我不是在找人为我做任何事情,只是指出我正确的方向,也许是让Hudson忽略某些SVN提交的技巧等.
到目前为止我发现的所有内容都只是一篇文章,解释了如何自动增加版本号,没有考虑到可以旋转到无限循环的CI平台.
我们之前通过SDK引用了我们的Windows Azure库,我注意到他们现在已经为他们提供了NuGet包.这显然更好,所以我正在交换NuGet包的所有引用.
但是,我找不到包含RoleEnvironment等类的Microsoft.WindowsAzure.ServiceRuntime.dll的NuGet包.
我们应该从SDK安装中引用这个dll而不是nuget包吗?这似乎非常奇怪.我只是没有看到这个组件的包装?
我现在已经安装了所有"windowsazureofficial"标记的软件包(只是暂时的),但它们似乎都没有正确的引用!
我还在学习Knockout的正确使用方法,并且我发现自己ko.observable在设置我的viewmodel时很快就远离了键入,而只是定义了一个对象文字,并通过映射插件传递给它
var viewModel = ko.mapping.fromJS(data);
Run Code Online (Sandbox Code Playgroud)
或者至少,将所有数据填充到viewModel上的属性中,就像这样
var viewModel = {
... events etc ... ,
"data": ko.mapping.fromJS(data)
}
Run Code Online (Sandbox Code Playgroud)
说实话,我一直这样做的主要原因是为了解决必须打字ko.observable和ko.observableArray重复的问题.我只是想弄清楚这是否是一个好方法,如果有任何缺点,将var x = ko.observable()所有特定声明放在一起.此外,我正在加载所有这些,而不是响应任何ajax调用等,从我可以看出,这是映射插件的设计目的.
在使用knockout的工作中,你是否仍然手动逐个声明observable,或者你使用了我使用的mapping.fromJS方法?像这样经常使用映射插件有什么特别的缺点吗?
编辑:
在本文中,Steve通过这样做来设置他的viewModel
var initialData = [ { ... } , { ... } ]; // json from the serializer
var viewModel = {
gifts : ko.observableArray(initialData)
};
Run Code Online (Sandbox Code Playgroud)
通常,我也只是ko.mapping.fromJS用于这种情况,特别是为了确保数组中的对象也被转换为可观察对象.看看他做了什么,我的做法似乎有些过度,并增加了一些不必要的开销.
我通常在JavaScript中添加自定义的敲除 绑定处理程序
ko.bindingHandlers.myBindingHandler = {...}
Run Code Online (Sandbox Code Playgroud)
但现在我必须通过TypeScript添加它们
ko.bindingHandlers["myBindingHandler"] = {...}
Run Code Online (Sandbox Code Playgroud)
否则我得到这个错误,因为我正在使用typescript.d.ts:
属性'myBindingHandler'不存在于'KnockoutBindingHandlers'类型的值上
我不喜欢这种["property"]方法,因为我不能在以后引用它或获得intellisense.
那么,如何在使用definitelyTyped的敲除定义的同时将我的自定义绑定处理程序添加到knockout ,同时还能通过intellisense等引用我的定义?
我正在序列化这样的类
public MyClass
{
public int? a { get; set; }
public int? b { get; set; }
public int? c { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
所有类型都可以为空,因为我希望在序列化此类对象时存储最少的数据.但是,当它仅使用"a"进行序列化时,我得到以下xml
<MyClass ...>
<a>3</a>
<b xsi:nil="true" />
<c xsi:nil="true" />
</MyClass>
Run Code Online (Sandbox Code Playgroud)
如何将此设置为仅获取非null属性的xml?期望的输出将是
<MyClass ...>
<a>3</a>
</MyClass>
Run Code Online (Sandbox Code Playgroud)
我想排除这些空值,因为会有几个属性,这是存储在数据库中(是的,这不是我的调用)所以我想保持未使用的数据最小.
如何对使用PrincipalPermission属性修饰的代码进行单元测试?
例如,这有效:
class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
var c = new MyClass();
}
}
[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Users")]
class MyClass
{
public MyClass()
{
Console.WriteLine("This works.");
}
}
Run Code Online (Sandbox Code Playgroud)
这会抛出SecurityException:
[TestClass]
public class UnitTest1
{
[TestInitialize]
public void TestInitialize()
{
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
}
[TestMethod]
public void TestMethod1()
{
var c = new MyClass();
}
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我不确定这是一个错误还是我只是遗漏了一些东西,但我不能为我的生活弄清楚如何将光标放回到Visual Studio 2010中的Windows窗体设计器中.
我打开了一个现有的项目,并添加了一个组框,现在我的光标卡在了绘图组框中.我只想要简单的指针光标,但我没做什么似乎把它带回来.
我几乎预计它会出现在"光标"下的工具箱上,但事实并非如此.
我正在尝试将一个cookie包装在一个计算的observable中(后来我将变成一个protectedObservable),并且我对计算的observable有一些问题.我认为计算的observable的更改将广播到已绑定到它的任何UI元素.
我创造了以下小提琴
JavaScript:
var viewModel = {};
// simulating a cookie store, this part isnt as important
var cookie = function () {
// simulating a value stored in cookies
var privateZipcode = "12345";
return {
'write' : function (val) { privateZipcode = val; },
'read': function () { return privateZipcode; }
}
}();
viewModel.zipcode = ko.computed({
read: function () {
return cookie.read();
},
write: function (value) {
cookie.write(value);
},
owner: viewModel
});
ko.applyBindings(viewModel);?
Run Code Online (Sandbox Code Playgroud)
HTML:
zipcode:
<input …Run Code Online (Sandbox Code Playgroud) 我有一个BindingSource我在winforms数据绑定中使用的东西,我想在用户尝试在对数据进行更改后关闭表单时提供某种提示.有点"你确定要退出而不保存更改吗?"
我知道,我可以通过这样做BindingSource的CurrencyManager.ItemChanged通过只是翻转'改变’布尔事件.
但是,我想要一个更强大的功能. 我想知道当前数据何时与原始数据不同. 该事件只是告诉我是否有些事情发生了变化.用户仍然可以更改属性,点击撤消,我仍然认为要保存的数据有变化.
我想模仿记事本的这种类似功能
如果这是不可能的,那么我应该使用ItemChanged上面概述的事件处理程序还是有更好的方法?
为了记录,我正在寻找类似的东西
bool HasChanged()
{
return this.currentState != this.initialState;
}
Run Code Online (Sandbox Code Playgroud)
不是这个
bool HasChanged()
{
// this._hasChanged is set to true via event handlers
return this._hasChanged;
}
Run Code Online (Sandbox Code Playgroud)
我只是不需要自己管理当前状态和初始状态,我正在寻找一种方法来获取信息,BindingSource 如果我可以从BindingSource它的方式获得此功能更理想,因为我将能够使用许多不同数据源的功能,无论类型如何等.
c# ×5
knockout.js ×3
.net ×2
javascript ×2
winforms ×2
azure ×1
data-binding ×1
hudson ×1
msbuild ×1
mstest ×1
mvvm ×1
nuget ×1
nullable ×1
security ×1
typescript ×1
unit-testing ×1
versioning ×1