Jun 1: MSBuild Exec task - IgnoreStandardErrorWarningFormat
If you are using MSBuild 4.0.30319 and try to set the property IgnoreStandardErrorWarningFormat on the Exec task you might run into the following message error:
The solution is very, very simple: be sure to add ToolsVersion="4.0" to the Project tag.
<Project DefaultTargets="Bla" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<Target Name="Bla">
<Exec IgnoreStandardErrorWarningFormat="true" Command="dir /w" />
</Target>
</Project>
error MSB4064: The "IgnoreStandardErrorWarningFormat" parameter is not supported by the "Exec" task.
The solution is very, very simple: be sure to add ToolsVersion="4.0" to the Project tag.
<Project DefaultTargets="Bla" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<Target Name="Bla">
<Exec IgnoreStandardErrorWarningFormat="true" Command="dir /w" />
</Target>
</Project>
May 9: Upgrade test project from VS2005 to VS2010
The solution contains several projects, including test projects. All of which now target .Net Framework 2.0 (although some already reference .Net Framework 3.0 or 3.5 assemblies). We do not want to upgrade to .Net Framework 4.0 just yet. Goal of the upgrade is to have every project in the solution target .Net Framework 3.5.
After converting the solution to VS2010 most of the projects reference .Net Framework 2.0. Some of which do not build, because of references to assemblies targeted at a higher .Net Framework. Visual Studio 2010 does not allow cross-referencing to higher .Net Framework assemblies. Fixing this problem is quite simple: just re-target the project to .Net Framework 3.5.
All of the test projects have been set to .Net Framework 4.0. One could discuss if this is acceptable for test projects as these will not be released. But for now it was decided to keep every project targeted at .Net Framework 3.5. Fortunately most of the test projects were easily re-targeted to .Net Framework 3.5. Hint: if you run into problems here, make sure VS2010 SP1Rel is installed.
For one of the test projects the solution just would not load it if re-targeted at .Net Framework 3.5. Each time the project was re-targeted, the conversion wizard would just pop up and set it back to .Net Framework 4.0. Eventually we found a workaround by editing the project file by hand after the conversion.
Two manual fixes were needed:
After converting the solution to VS2010 most of the projects reference .Net Framework 2.0. Some of which do not build, because of references to assemblies targeted at a higher .Net Framework. Visual Studio 2010 does not allow cross-referencing to higher .Net Framework assemblies. Fixing this problem is quite simple: just re-target the project to .Net Framework 3.5.
All of the test projects have been set to .Net Framework 4.0. One could discuss if this is acceptable for test projects as these will not be released. But for now it was decided to keep every project targeted at .Net Framework 3.5. Fortunately most of the test projects were easily re-targeted to .Net Framework 3.5. Hint: if you run into problems here, make sure VS2010 SP1Rel is installed.
For one of the test projects the solution just would not load it if re-targeted at .Net Framework 3.5. Each time the project was re-targeted, the conversion wizard would just pop up and set it back to .Net Framework 4.0. Eventually we found a workaround by editing the project file by hand after the conversion.
Two manual fixes were needed:
- Change reference of "Microsoft.QualityTools.UnitTestFramework" to
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" /> - Remove contents of the tag
<FileUpgradeFlags>0</FileUpgradeFlags>, which hints VS2010 to start the conversion wizard.
Apr 13: T-SQL: Import csv in temp table
Seems pretty simple to do... Just execute a query like this one:
SELECT * INTO #TESTCSV
FROM OPENROWSET (
'Microsoft.Jet.OLEDB.4.0',
'Text;Database=C:\;HDR=YES',
'SELECT * FROM test.csv')
In my case I was getting the following error message, which got me baffled for quite some time:
This really didn't make any sense to me. There were no duplicate column names in the csv file and surely there were no columns named 'NoName', nor did I forget to name a column...
Then it came to me: what if UNICODE isn't parsed correctly? Maybe that could cause empty columns headers? The file was exported by ReportViewer and I had not looked at the encoding of the resulting csv file. Guess what!? The encoding was UNICODE. So, after saving the file in ANSI encoding, the query executed like a charm.
SELECT * INTO #TESTCSV
FROM OPENROWSET (
'Microsoft.Jet.OLEDB.4.0',
'Text;Database=C:\;HDR=YES',
'SELECT * FROM test.csv')
Msg 492, Level 16, State 1, Line 1
Duplicate column names are not allowed in result sets obtained through OPENQUERY and OPENROWSET. The column name "test#csv.NoName" is a duplicate.
Duplicate column names are not allowed in result sets obtained through OPENQUERY and OPENROWSET. The column name "test#csv.NoName" is a duplicate.
This really didn't make any sense to me. There were no duplicate column names in the csv file and surely there were no columns named 'NoName', nor did I forget to name a column...
Then it came to me: what if UNICODE isn't parsed correctly? Maybe that could cause empty columns headers? The file was exported by ReportViewer and I had not looked at the encoding of the resulting csv file. Guess what!? The encoding was UNICODE. So, after saving the file in ANSI encoding, the query executed like a charm.
« previous page
(Page 1 of 5, totaling 13 entries)
next page »
