我们有以下共享组件:
public class OurServiceBase : System.ServiceProcess.ServiceBase
Run Code Online (Sandbox Code Playgroud)
此类具有我们在所有下游服务中所需的功能,例如标准化执行调度和日志记录功能.
在一个新项目中,我添加以下内容:
public class MyService : System.ServiceProcess.ServiceBase
Run Code Online (Sandbox Code Playgroud)
在Windows Designer中,该类正确显示.
当我将服务更改为从OurServiceBase派生时
public class MyService : OurSharedLibrary.OurServiceBase
Run Code Online (Sandbox Code Playgroud)
设计师停止工作:

完整错误是:无法为此文件显示设计器,因为其中的所有类都无法设计.设计者检查了文件中的以下类:EmailProcessor ---无法加载基类"OurSharedLibrary.CienaServiceBase".确保已引用程序集并且已构建所有项目.
引用正确的程序集,项目构建.我不明白为什么设计师正在翻阅这个,因为我的服务最终来自一个可设计的类.
任何建议都是最受欢迎的.
更多信息 - 设计者在呈现无法设计派生服务的错误时调用堆栈:
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument(IDesignerSerializationManager manager)
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
at System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)
Run Code Online (Sandbox Code Playgroud)
7/19/2011 2:34 PM EDT新发现.
类"OurServiceBase"存在于一个单独的项目中(通常仅作为DLL引用).一时兴起,我将基类文件复制到我的项目中,构建并打开设计器.有效!当我再次删除基类文件并返回到外部DLL引用时,设计器再次崩溃.
使用nUnit,如果在测试中添加Debug.Print语句,它们将出现在测试输出中.(至少他们在Resharper单元测试窗口中)
使用执行相同测试的nant构建文件时,不会显示那些Debug.Print语句.
如何在单元测试中添加消息,该消息将出现在nUnit输出和nant的构建日志输出中?
提到这个问题:
我有以下内容:
[Test]
public void OnSearchRequest_ViewFiresEvent_EventIsHandled()
{
// Arrange
Mock<IViewUsers> view = new Mock<IViewUsers>();
Users users = new Users(view.Object);
// Act
view.Raise(v => v.SearchForUsers += null, this, new SearchEventArgs());
// Assert
view.VerifySet(v=> v.SearchResult = It.IsAny<List<IUser>>());
}
Run Code Online (Sandbox Code Playgroud)
最初我有:
// Assert
view.VerifySet(v => v.SearchResult);
Run Code Online (Sandbox Code Playgroud)
但得到了警告:
'Moq.MockExtensions.VerifySet(Moq.Mock,System.Linq.Expressions.Expression>)'已废弃:'由VerifySet替换(Action)'
所以我找到了上面引用的问题,并将其更改为匹配,但现在我仍然得到了警告,最重要的是,在对VerifySet的调用中"v.SearchResult"上发生了一个硬错误:
表达式树可能不包含赋值运算符.
我不明白我是不正确地格式化这个 - 所以为什么它不认识到这是一个动作,因为另一个问题暗示它应该?
我无法弄清楚为什么HasChanged我的SqlCacheDependency对象的值最初从命令执行返回为false,但几乎在它从数据库返回后的某个地方,值变为true.
有时这会在项目被插入缓存之前发生,导致缓存立即丢弃它,有时它在插入之后,我可以抓住一个枚举器,它在缓存中看到密钥但在我甚至循环到该项目之前缓存它已被删除.
存储过程:
ALTER PROCEDURE [dbo].[ntz_dal_ER_X_Note_SelectAllWER_ID]
@ER_ID int
AS
BEGIN
SELECT
ER_X_Note_ID,
ER_ID,
Note_ID
FROM dbo.ER_X_Note e
WHERE
ER_ID = @ER_ID
END
Run Code Online (Sandbox Code Playgroud)
数据库是MS SQL Server 2008,启用了代理服务,并且某些输出确实缓存并保持缓存.例如,这个工作正常:
ALTER PROC [dbo].[ntz_dal_GetCacheControllerByEntityName] (
@Name varchar(50)
) AS
BEGIN
SELECT
CacheController_ID,
EntityName,
CacheEnabled,
Expiration
From dbo.CacheController cc
WHERE EntityName = @Name
END
Run Code Online (Sandbox Code Playgroud)
调用SPROC失败的代码:
DataSet toReturn;
Hashtable paramHash = new Hashtable();
paramHash.Add("ER_ID", _eR_ID.IsNull ? null : _eR_ID.Value.ToString());
string cacheName = BuildCacheString("ntz_dal_ER_X_Note_SelectAllWER_ID", paramHash);
toReturn = (DataSet)GetFromCache(cacheName);
if (toReturn == null)
{
// …Run Code Online (Sandbox Code Playgroud) 使用这样的代码:
DataTable schema = conn.GetSchema();
DataTable tables = conn.GetSchema("Tables");
DataTable columns = conn.GetSchema("Columns");
Run Code Online (Sandbox Code Playgroud)
可以获取有关模式的大量信息,但元数据版本(即:GetSchema())不会返回有关同义词的任何信息.
我们在环境中使用同义词.我可以使用GetSchema获取有关它们的Schema信息,还是需要其他方法?
处理一个相当大的项目和一个较大的项目文件夹使用公司标准生成的代码层.这个代码层在Resharper中触发了很多"问题",但是现在重构代码生成器根本就不会发生.
有没有办法告诉Resharper在运行解决方案广泛代码检查时跳过此特定文件夹?
作为我们的应用程序架构的一部分,我们希望在功能层之间定义清晰的线条.因此,典型的应用程序解决方案将包含:
这些最终成为完全不同的组件.
实体/模型描述是为了将数据库访问功能保持在与POCO不同的层中,因此只有Task需要了解Model,而Presenter的所有人都知道实体
这在使用Code-First或Fluent-API时效果很好 - 但由于在这些范例中缺乏对SPROC的支持,事实证明在EF 4.1下我必须使用EDMX模型.
所以 - 我正在使用DbContext Generator生成POCO,但结果类最终在.Model下,虽然我可以将其命名空间强制转换为.Entity,但它们仍然存在于.Model程序集中,这意味着现在.Presenter必须引用.Model来获取应该在.Entity中的类.
有没有办法强制或欺骗EF将其生成的输出转储到另一个项目?
我们在测试环境中使用自定义配置部分出现了一个奇怪的错误.
这适用于在开发和测试环境中使用SQL Server 2008在Enterprise Server 2008 r2 64位上运行的Windows服务.
此部分配置我们的共享代码库,以便在处理错误并使用以下代码发布时向相关方发送电子邮件:
catch(Exception ex)
{
ExceptionManager.Publish(ex);
}
Run Code Online (Sandbox Code Playgroud)
错误细节(完整细节 - 名称已更改以保留无辜者)
4 <configSections>
5 <section name="exceptionManagement"
6 type="Company.Shared.ExceptionManagement.ExceptionManagerSectionHandler, Company.Shared" />
7 </configSections>
8 <exceptionManagement>
9 <publisher assembly="Company.Shared" type="Company.Shared.ExceptionManagement.DefaultPublisher"
10 logName="CPODSOracleDataExchange" applicationName="CPODSOracleDataExchange Service" />
11 <publisher assembly="Company.Shared" type="Company.Shared.ExceptionManagement.ExceptionManagerSMTPPublisher"
12 from="CPODSOracleDataExchangeService@Company.com"
13 defaultRecipients="dev1@Company.com,dev2@Company.com"
14 applicationName="CPODSOracleDataExchange Service" />
15 </exceptionManagement>
1) Exception Information
*********************************************
Exception Type: System.Configuration.ConfigurationErrorsException
Message: An error occurred creating the configuration section handler for exceptionManagement: Request failed. (E:\CITApps\Services\CPODS.OracleDataExchangeService\Company.CPODS.OracleDataExchangeService.exe.Config line 5)
BareMessage: An error occurred …Run Code Online (Sandbox Code Playgroud) 根据附件,我们在数据转换中设置了一个平衡数据分配器,覆盖约200万行.脚本任务是相同的 - 每个脚本都打开一个与oracle的连接,然后首先执行删除操作然后执行插入操作.(这不相关,但是由于Ole DB命令和Oracle的Microsoft Ole DB提供程序的参数问题,它已经这样做了...)

我遇到的问题是无论我的缓冲区有多大或我配置了多少并发执行,BDD一次不会执行超过五个并发进程.
我已经在一个更大的缓冲区中撤回了数十万行,它只是分为5种方式.我在多台机器上尝试了这一点 - 目前的镜头来自16核心服务器,在程序包上配置了-1个并发执行 - 无论如何,它始终是5个并行作业.
5优于1,但插入/更新250万行,5次并发执行时每秒15行并不比每秒2-3行有1次并发执行好多少.
我可以强制BDD使用更多路径,如果是这样,怎么办?
我最近参与了(或者更确切地说,重新参与)我最初在2000年用ASP编写的一个Web项目.在过去的13年中,该项目在技术用途(ASP,ASP.NET 1.1,ASP.NET 3.5和ASP.NET 4.0)中不断发展并变得非常复杂.我们现在正在VS 2010工作.
有多个不同的Web应用程序嵌套在同一个树中.这些项目中的每一个都有自己的样式和图像文件夹,导致图像和css文件的大量冗余,这使得我们的GUI开发人员有点疯狂,试图让他们保持一致.
我正在努力清理乱七八糟的东西.我的目的是将这些冗余资源整合到一个"核心"项目文件夹中.我希望在树下更深处的其他项目将这些文件链接到他们的项目中,而不是拥有它们的副本.
我已经能够通过编辑下游Web项目并添加以下内容来实现此目的:
<ItemGroup>
<Content Include="..\..\Core\XXXXX.XXXXX.ASP.Web\Images\**\*.*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Link>images\%(RecursiveDir)%(FileName)%(Extension)</Link>
</Content>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
这导致图像被链接并且它看起来正确:

当我构建项目时,文件最终会在bin文件夹中:

我们使用nant构建我们的发布项目,我可以通过更新我的复制任务来确保图像包含在发布副本中,所以没有问题.
但是当我在本地运行项目时,图像拒绝出现在网页(localhost实例)中:

它应该看起来像(Dev服务器实例):

当然,这不是关键任务 - 但是在本地运行项目并且看不到图像以及因此它的页面布局是非常烦人的.
如何让这些链接图像显示在本地?
鉴于电子邮件正文中的以下文字:
不要修改上面的主题行.发送此电子邮件表示我要求延迟将此产品更改通知(PCN)分发到9001(Qwest).此延迟请求的基本原理如下:
这就是我需要捕获的原因.
它可以长很多行.
并且持续很长时间
我正在尝试捕获"...下面提供的所有文本:".
传递给BodyRegex的模式是:
.*provided below:(?<1>.*)
Run Code Online (Sandbox Code Playgroud)
正在执行的代码是:
Regex regex2 = new Regex(BodyRegex, RegexOptions.IgnoreCase | RegexOptions.Multiline);
string note = null;
Match m2 = regex2.Match(body);
if (m2.Success)
{
note = m2.Groups[1].Value;
}
Run Code Online (Sandbox Code Playgroud)
找不到比赛.
我需要使用什么匹配模式来捕获"下面提供的所有文本行:"?
c# ×8
app-config ×1
asp.net ×1
asp.net-3.5 ×1
logging ×1
moq ×1
nant ×1
nunit ×1
regex ×1
resharper ×1
schema ×1
service ×1
sql-server ×1
ssis ×1