我有一个在TransactionScope中运行的代码块,在这段代码中,我多次调用DB.选择,更新,创建和删除整个色域.当我执行删除操作时,我使用SqlCommand的扩展方法执行它,如果查询死锁,它将自动重新提交查询,因为此查询可能会遇到死锁.
我相信当遇到死锁并且函数尝试重新提交查询时会发生此问题.这是我收到的错误:
与当前连接关联的事务已完成但尚未处理.必须先处理事务,然后才能使用连接执行SQL语句.
这是执行查询的简单代码(下面的所有代码都在使用TransactionScope执行):
using (sqlCommand.Connection = new SqlConnection(ConnectionStrings.App))
{
sqlCommand.Connection.Open();
sqlCommand.ExecuteNonQueryWithDeadlockHandling();
}
Run Code Online (Sandbox Code Playgroud)
以下是重新提交死锁查询的扩展方法:
public static class SqlCommandExtender
{
private const int DEADLOCK_ERROR = 1205;
private const int MAXIMUM_DEADLOCK_RETRIES = 5;
private const int SLEEP_INCREMENT = 100;
public static void ExecuteNonQueryWithDeadlockHandling(this SqlCommand sqlCommand)
{
int count = 0;
SqlException deadlockException = null;
do
{
if (count > 0) Thread.Sleep(count * SLEEP_INCREMENT);
deadlockException = ExecuteNonQuery(sqlCommand);
count++;
}
while (deadlockException != null && count < MAXIMUM_DEADLOCK_RETRIES);
if (deadlockException != null) throw deadlockException; …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用XSLT将一些XML转换为HTML.
问题:
我无法让它发挥作用.有人能告诉我我做错了什么吗?
XML:
<ArrayOfBrokerage xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.test.com/">
<Brokerage>
<BrokerageID>91</BrokerageID>
<LastYodleeUpdate>0001-01-01T00:00:00</LastYodleeUpdate>
<Name>E*TRADE</Name>
<Validation i:nil="true" />
<Username>PersonalTradingTesting</Username>
</Brokerage>
</ArrayOfBrokerage>
Run Code Online (Sandbox Code Playgroud)
XSLT:
<xsl:stylesheet version="1.0" xmlns="http://www.test.com/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xslFormatting="urn:xslFormatting">
<xsl:output method="html" indent="no"/>
<xsl:template match="/ArrayOfBrokerage">
<xsl:for-each select="Brokerage">
Test
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud) 我有我的CI服务器设置来构建和部署我的所有环境,包括我的生产环境.据我所知,我的所有项目文件和CI设置的设置在我的Staging环境构建和我的Production环境构建之间是相同的.但是,当我部署到生产环境时,没有PDB文件与DLL文件一起存在,就像在暂存中一样.以下是部署每个应用程序的脚本:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe %location% ^
/p:Configuration=%configName% ^
/p:DeployOnBuild=True ^
/p:DeployTarget=MSDeployPublish ^
/p:AllowUntrustedCertificate=True ^
/p:MSDeployPublishMethod=WMSvc ^
/p:CreatePackageOnPublish=True ^
/p:MsDeployServiceUrl=https://%serverName%:8172/MsDeploy.axd ^
/p:DeployIisAppPath=%siteName% ^
/p:UserName=%username% ^
/p:Password=%password%
Run Code Online (Sandbox Code Playgroud)
因此,似乎在配置=释放PDB文件时,尽管它们是在构建服务器上生成的.有任何想法吗?
我有两个对象集合(List list1和List list2).每个被称为"ID"的属性.我知道list2总是会有比list1更多的项目,我只需要一个简单的方法来获取list2中存在的所有项目的集合,但不使用LINQ lambda表达式获取list1.
我正在创建一个MSBuild文件,将我需要在构建服务器上执行的操作的一些任务合并为一步.此过程的一部分需要运行代码分析.我的问题是我已经为多个顶级项目运行代码分析,但它们对其他项目(如我们的实用程序库)具有相同的依赖性.这意味着每次代码分析都会复制Utility Library的代码分析运行.这是我的MSBuild文件:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Dev</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<RunCodeAnalysis>true</RunCodeAnalysis>
<CodeAnalysisTargets>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\CodeAnalysis\Microsoft.CodeAnalysis.targets</CodeAnalysisTargets>
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
<StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>
<DefineConstants>TRACE;DEBUG;CODE_ANALYSIS</DefineConstants>
<BuildInParallel>true</BuildInParallel>
<WebProjectTargets>Clean;Build;Package</WebProjectTargets>
<OtherProjectTargets>Clean;Build</OtherProjectTargets>
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
</PropertyGroup>
<Target Name="Build">
<!-- Web Projects -->
<MSBuild
Projects="$(MSBuildProjectDirectory)\Source\WebProjects\WebApp1\WebApp1.csproj"
Properties="
Configuration=$(Configuration);
PackageLocation=$(MSBuildProjectDirectory)\Packages\WebApp1.zip;
RunCodeAnalysis=$(RunCodeAnalysis);
CodeAnalysisTargets=$(CodeAnalysisTargets);
CodeAnalysisTreatWarningsAsErrors=$(CodeAnalysisTreatWarningsAsErrors);
StyleCopTreatErrorsAsWarnings=$(StyleCopTreatErrorsAsWarnings);
DefineConstants=$(DefineConstants);
BuildInParallel=$(BuildInParallel);
GenerateSerializationAssemblies=$(GenerateSerializationAssemblies);
"
Targets="$(WebProjectTargets)" />
<MSBuild
Projects="$(MSBuildProjectDirectory)\Source\WebProjects\WebApp2\WebApp2.csproj"
Properties="
Configuration=$(Configuration);
PackageLocation=$(MSBuildProjectDirectory)\Packages\WebApp2.zip;
RunCodeAnalysis=$(RunCodeAnalysis);
CodeAnalysisTargets=$(CodeAnalysisTargets);
CodeAnalysisTreatWarningsAsErrors=$(CodeAnalysisTreatWarningsAsErrors);
StyleCopTreatErrorsAsWarnings=$(StyleCopTreatErrorsAsWarnings);
DefineConstants=$(DefineConstants);
BuildInParallel=$(BuildInParallel);
GenerateSerializationAssemblies=$(GenerateSerializationAssemblies);
"
Targets="$(WebProjectTargets)" />
<MSBuild
Projects="$(MSBuildProjectDirectory)\Source\WebProjects\Administrator\Administrator.csproj"
Properties="
Configuration=$(Configuration);
PackageLocation=$(MSBuildProjectDirectory)\Packages\Administrator.zip;
RunCodeAnalysis=$(RunCodeAnalysis);
CodeAnalysisTargets=$(CodeAnalysisTargets);
CodeAnalysisTreatWarningsAsErrors=$(CodeAnalysisTreatWarningsAsErrors);
StyleCopTreatErrorsAsWarnings=$(StyleCopTreatErrorsAsWarnings);
DefineConstants=$(DefineConstants);
BuildInParallel=$(BuildInParallel);
GenerateSerializationAssemblies=$(GenerateSerializationAssemblies);
" …
Run Code Online (Sandbox Code Playgroud) 我最近将我的Windows 10更新为包含.NET v4.6.2 Framework的周年纪念版.当我尝试在Visual Studio 2015中使用Update 3加载针对v4.6.2框架的项目时,VS告诉我v4.6.2"未安装在此计算机上".当我尝试下载并安装v4.6.2时,安装程序告诉我此机器上已安装v4.6.2或更高版本.有谁知道如何解决这个问题?
我得到了一组170个WSDL文件,我需要将它们转换为C#类文件.有没有办法批处理这个?
我正在使用DataContractSerializer将对象序列化为XML.主要对象是SecurityHolding,命名空间为" http://personaltrading.test.com/ ",包含一个名为Amount的属性,它是一个名为" http://core.test.com "的类.当我将其序列化为XML时,我得到以下内容:
<ArrayOfSecurityHolding xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://personaltrading.test.com/">
<SecurityHolding>
<Amount xmlns:d3p1="http://core.test.com/">
<d3p1:Amount>1.05</d3p1:Amount>
<d3p1:CurrencyCode>USD</d3p1:CurrencyCode>
</Amount>
<BrokerageID>0</BrokerageID>
<BrokerageName i:nil="true" />
<RecordID>3681</RecordID>
</SecurityHolding></ArrayOfSecurityHolding>
Run Code Online (Sandbox Code Playgroud)
反正我可以控制d3p1前缀吗?我做错了什么或者我应该做别的事吗?
有没有办法以编程方式执行(启动)SQL Server维护计划?我们有一个夜间运行的Windows服务,并使用大量数据更新数据库,一旦完成,我们希望在数据库中触发维护计划以开始运行.
我最近开始在Visual Studio中的项目中使用代码分析.我创建了一个自定义规则集,用于包含两个Microsoft定义的规则集的所有项目.我一直在努力将FxCop集成到CI构建过程中,以使未通过所有规则的构建失败.对我来说真正奇怪的是我不能使用我的规则集来定义FxCop扫描代码的规则.我如何使Visual Studio的代码分析规则符合FxCop的规则?
.net ×3
c# ×3
msbuild ×2
namespaces ×2
sql-server ×2
xml ×2
.net-4.6.2 ×1
ado.net ×1
deadlock ×1
deployment ×1
fxcop ×1
lambda ×1
linq ×1
service ×1
svcutil.exe ×1
teamcity ×1
transform ×1
wsdl ×1
xslt ×1