我想到的第一个想法是使用两个Visual Studio(.sln)构建步骤 - 每个配置一个.(TC v5 +上支持多个构建步骤).
有没有更好的办法?
我正在努力为自己做好准备迎接这个问题:
"为什么我们不能在后面的代码中实现表示模型?"
事实上,我参与了一个项目,我们使用了一个在后面的代码中实现的表示模型.它运作得相当好,我们甚至可以对它进行单元测试.是的,你在单元测试中依赖于WPF ......但它确实有效!
那么,使用代码背后的主要缺点是什么?
我更喜欢独立ViewModel(MVVM)的想法,但目前我觉得无法向客户证明这一点.
Socket具有这些新的异步方法,因为.NET 3.5与SocketAsyncEventArgs(例如Socket.SendAsync())一起使用,有利于它们使用IO完成端口并避免需要继续分配.
我们创建了一个名为UdpStream的类,它具有简单的接口 - 只需StartSend和Completed事件.它分配两个SocketAsyncEventArgs,一个用于发送,一个用于接收.StartSend只是使用SendAsync调度消息,并且每秒调用大约10次.我们在接收SocketAsyncEventArgs上使用Completed事件,并在处理完每个事件后,我们所有的ReceiveAsync都会形成一个接收循环.同样,我们每秒大约收到10次.
我们的系统需要支持多达500个这些UdpStream对象.换句话说,我们的服务器将与500个不同的IP端点同时通信.
我注意到在MSDN SocketAsyncEventArgs示例中他们分配了N x SocketAsyncEventArgs,一个用于您希望一次处理的每个未完成的接收操作.我不清楚这与我们的场景究竟有什么关系 - 在我看来,也许我们没有得到SocketAsyncEventArgs的好处,因为我们只是为每个端点分配一个.如果我们最终获得500个SocketAsyncEventArgs,我认为我们将无法获益.也许我们仍然可以从IO完成端口获得一些好处?
在扩展到500时,此设计是否正确使用SocketAsyncEventArgs?
对于我们使用单个"UdpStream"的情况,使用SocketAsyncEventArgs与使用旧的Begin/End API相比有什么好处?
默认情况下,以下内容出现在 Razor 生成的代码中:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Helpers;
using System.Web.Security;
using System.Web.UI;
using System.Web.WebPages;
Run Code Online (Sandbox Code Playgroud)
这些是从哪里来的?我查看了 machine.config 和根级 web.config,但它不在那里。
我已经验证我可以使用以下方法添加到该列表中:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
.... etc
Run Code Online (Sandbox Code Playgroud)
而且我猜我可能可以使用<clear/>...删除,但我很想知道它们从哪里开始。
我有以下类型层次结构:
public abstract class ResourceId
{
}
public class CarId : ResourceId
{
}
public class PlaneId: ResourceId
{
}
public interface IResource
{
ResourceId Id { get; set; }
}
public class Plane : IResource
{
public ResourceId Id { get; set; }
}
public class Car : IResource
{
public ResourceId Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望AutoFixture在尝试创建Plane或Car时创建"正确"类型的ResourceId.
我试过用:
_fixture.Customize<Plane>(composer =>
composer.With(h => h.Id, _fixture.Create<PlaneId>()));
Run Code Online (Sandbox Code Playgroud)
但是,当然会为每个实例创建相同的ID.我希望每个人都有一个唯一的ID.
对此最好的方法是什么?
我刚刚在新工作站上全新安装了 VS2015 Update 2,并开始运行一些使用 SQL LocalDb 的集成测试。他们因以下原因而失败SqlException:
附加信息:本地数据库运行时:无法创建命名实例。
指定的 LocalDB 版本在此计算机上不可用。
我们使用的连接字符串是(并且以前使用 VS2013):
server=(localdb)\SystemTest;Integrated Security=true
Run Code Online (Sandbox Code Playgroud)
如您所见,这没有指定任何版本,实际上是在尝试连接到命名实例。
如果我跑sqllocaldb v我得到:
Microsoft SQL Server 2014 (12.0.2000.8)
Microsoft SQL Server 2016 Release Candidate 0 (RC0) (13.0.1100.286)
Run Code Online (Sandbox Code Playgroud)
我尝试手动创建和启动“SystemTest”实例,甚至指定版本,但两者似乎都导致抛出相同的 SqlException。
连接字符串语法是否已更改?我错过了什么?
更新:
如果我使用自动实例(现在在 SQL2014 及更高版本上命名为“MSSQLLocalDb”),代码工作得很好。比较这两个实例时,sqllocaldb i除了一个是自动创建之外,它们都是相同的。他们都在Running州内。所以看起来问题只发生在命名实例上。
我找到删除 TeamCity 标签的唯一方法是从所有版本中删除对该标签的所有引用。这是一个手动且费力的过程。有没有办法自动完成?
我刚刚尝试使用在 Build 2017 上宣布的新奇 Azure Cloud Shell,但收到以下错误(作为 json 消息):
{
"error": {
"code": "MissingSubscriptionRegistration",
"message": "The subscription is not registered to use namespace 'Microsoft.Storage'"
}
}
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索了这个并找到了答案,建议我需要注册一个资源提供者:
Register-AzureRmResourceProvider -ProviderNamespace Microsoft.Storage
Run Code Online (Sandbox Code Playgroud)
或者
azure provider register Microsoft.Storage
Run Code Online (Sandbox Code Playgroud)
...但我懒得设置到 Azure 的命令行会话。
如何使用 Azure 门户执行此操作?
我们部署了多个Lambda,可以使用该VpcConfig设置访问我们的VPC 。
我了解AWS Lambda通常会根据需要创建lambda,但是如果您将它们连接到VPC,则AWS会(在某个时候)在中指定的子网之一上创建ENI VpcConfig并附加lambda容器以允许其访问您的VPC。
但是究竟是什么触发了ENI的创建和附加呢?我注意到,lambda和ENI之间以及ENI与子网之间没有一对一的映射。另外,什么决定了ENI附加到哪个子网?
如果我ping localhost为VPC配置手动运行了一个测试lambda(至),它将永远不会创建ENI。所以我猜这是因为它没有尝试访问网络上的任何内容。
我的$env:PSModulePath最终包含 OneDrive:
C:\Users\jack\OneDrive\Documents\PowerShell\Modules;C:\Program Files\PowerShell\Modules;c:\program files\powershell\7\Modules;C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
Run Code Online (Sandbox Code Playgroud)
但我不希望我的所有模块都同步到云端。
根据文档:
Windows 上特定于用户的 CurrentUser 位置是 PowerShell\Modules 文件夹,位于用户配置文件中的Documents位置... Microsoft OneDrive 还可以更改 Documents 文件夹的位置。
所以这就解释了模块是如何结束的。但是我该如何解决呢?
我可以修改,$env:PSModulePath但这只会让 pwsh 找到更多我认为的模块。它不会更改为CurrentUser安装新模块的默认路径。
PS我在Update-Help本地保存帮助时遇到了同样的问题...... OneDrive :-(
.net ×2
teamcity ×2
asp.net ×1
asp.net-mvc ×1
asynchronous ×1
autofixture ×1
aws-lambda ×1
azure ×1
c# ×1
localdb ×1
msbuild ×1
mvvm ×1
powershell ×1
razor ×1
sockets ×1
sql-server ×1
teamcity-9.0 ×1
unit-testing ×1
web-config ×1
wpf ×1