I will be attending the first annual Microsoft RFID Solution Days, February 18-21 in Washington. I'm hoping to make it for the Reception on Sunday but I'm still waiting for my travel itinerary to be finalized by the Travel Agency. I'm also on the wait list for the hands on training and hope to get into that as well.
ScottGu's latest blog post talks about the VS 2008 web deployment project and the MS Web Deployment Team blog, which deals with a web deployment tool (not to be confused with the VS 2008 project). I had to do a little digging, but found this white paper on MSDN which explains the web deployment project for 2005. From the abstract: Visual Studio 2005 provides deployment support through its Copy Web Site and Publish Web Site features. While these are ideal for many scenarios, there are other, more advanced scenarios where developers need the following capabilities: - More control over assembly naming and output.
- Custom pre-processing and post-processing for the build.
- The ability to exclude, add, and transform files and directories during builds.
- The ability to modify the Web.config file to change database connection strings, application settings, or the URLs for Web references, depending on the build configuration. (For example, it might be necessary to use different values for development, test, staging, and release settings).
this white paper describes a solution to these advanced scenarios and introduces a new feature called Web Deployment Projects for Visual Studio 2005. The web deployment tool on the other hand, is a stand alone tool (currently just a command line utility called msdeply.exe), "that provides support for deploying, synchronizing and migrating IIS 6.0 and 7.0." It supports moving configuration, content, SSL certificates and other types of data associated with a web server. You can choose to sync a single site or the entire web server. Because we know that one tool can never ‘automagically’ guess what your application relies on, we’ve tried to be pretty flexible and powerful – you can customize exactly what you want to sync using a manifest file. You can also skip sites or other objects, or you can perform regular expression replacements during a sync (like changing the home directory on the destination machine). These two new tools will help make deployment a lot easier and enable a more agile environment. Unfortunately my project assignment at work has changed, so I won't be getting direct exposure to these.
Wouldn't you know, by TFS warehouse is not updating. It seems like I have had this problem before, but today, it was a new error. Today, I added 2 test projects to TFS, one for the MSF Agile (4.2) and one for MSF CMMI (4.2) to reference while I read Software Engineering with Microsoft Visual Studio Team System (thanks Larry). I'm not even through chapter one and I am hooked on this book. Chapter 1 was talking about the Reaming Work report, and I wanted to view it for the 2 test sites. I was able to view the report for the MSF Agile site, but not the CMMI site. A quick look at the reports via the Reporting Services web management UI, and I had a pretty good guess that the warehouse was not updating because there were no iterations or areas listed for those report parameters. I went checked out the TfsWarehouse.dbo._WarehouseConfig table, and saw that, yes, the warehouse stopped updating a couple of hours ago. My attempts to manually run the update using the web services interface via IE didn't seem to work. Remembering some of my previous troubleshooting, I went to the event log and found several errors, starting around the time that I created the CMMI project. Event Type: Error Event Source: TFS Warehouse Event Category: None Event ID: 3000 Date: 1/25/2008 Time: 6:20:57 PM User: N/A Computer: [TFSServer] Description: TF53010: The following error has occurred in a Team Foundation component or extension: Date (UTC): 1/26/2008 12:20:57 AM Machine: DATFSP100 Application Domain: /LM/W3SVC/1977639788/Root/Warehouse-4-128456993088380000 Assembly: Microsoft.TeamFoundation.Warehouse, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a; v2.0.50727 Process Details: Process Name: w3wp Process Id: 8512 Thread Id: 9920 Account name: [ServiceAccount] Detailed Message: The pending configuration changes were not successfully added to the cube because of the following error: System.Security.Principal.IdentityNotMappedException: Some or all identity references could not be translated. at System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean forceSuccess) at System.Security.Principal.NTAccount.Translate(Type targetType) at Microsoft.TeamFoundation.Warehouse.OlapCreator.AddAccountToRole(Role role, String accountName, Boolean needToUpdate) at Microsoft.TeamFoundation.Warehouse.OlapCreator.SetupAnalysisDatabase(Server server, String analysisDBName, String accessUser, String[] dataReaderAccounts) at Microsoft.TeamFoundation.Warehouse.OlapCreator.CreateOlap(WarehouseConfig whConf, String accessUser, String[] dataReaderAccounts, Boolean dropDB, Boolean processCube) at Microsoft.TeamFoundation.Warehouse.AdapterScheduler.EnsureCubeIsUpToDate() For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp. So started my Google Search. I came across a post on the MSDN forums which had some code to check to see if account translation is working on the network, and it appears to be (I got a SID value back for both my tfs service and tfs reports account) 1: using System; 2: using System.IO; 3: using System.Text; 4: using System.Xml; 5: using System.Xml.Serialization; 6: using System.Threading; 7: using System.Security.Principal; 8: 9: 10: namespace CheckAccountForTfs 11: { 12: public class Program 13: { 14: public static void Main(string[] args) 15: { 16: try 17: { 18: string accountName = args[0]; 19: Console.WriteLine(new NTAccount(accountName).Translate(typeof(SecurityIdentifier)).Value); 20: } 21: catch (Exception e) 22: { 23: Console.WriteLine(e); 24: } 25: } 26: } 27: }
Continuing my Google search, I found something embarrassing, I had the same exception for TFS listed on a previous post, on my very own blog. My solution last time was to run (Make sure you replace Server with your TFS server name, as well as use FQDN for the service and reports account).
setupwarehouse -o -s Server -d TfsWarehouse -c Warehouseschema.xml -a Domain\TfsService -ra Domain\TfsReports -v -mturl http://Server:8080 -rebuild
I did not remove the TFSWarehouse from Analysis Server before running this command. Also, the setupwarehouse command is in %Program Files%\Microsoft Visual Studio 2008 Team Foundation Server\Tools.
Eureka, manually invoking the warehouse job from the web service via IE actually starting processing, and with no errors in the Event Log. Looks like I might have to create a batch script to keep on the TFS server in case this happens again. I also need to search my own blog a little more carefully next time.
While I was trying to get the Remaining Work report to display initially, I somehow managed to mess up the parameter definition for Iteration and Area. I fixed this by saving the report (Go to the report's properties and click edit), along with another report with the at least those 2 parameters. Once saved as a text file, I copied the ReportParam element for both parameters from the good report to the bad report, then uploaded the fixed report back to reporting services. Problem solved.
I needed to change a bunch of project references such that they referenced a different location so that I could provide a solution to a 3rd party for a review. The idea of going thru 20 some projects and removing and re-adding the references was not appealing, so much that I thought about writing an application. I've learned my lesson though, and decided to Google to see if something was already written, and came across Cool Commands. Cool Commands was written by Gaston Milano of Deklarit. It's a very good plug-in, it just doesn't have much documentation, and since the tool is free, I'm not complaining. Install I was unsure how to install the plug-in, as there is no documentation, other then to unzip and run the setup.bat from a VS command prompt. - Download Cool Commands from this Direct download link
- UnZip - I unzipped to %MyDocuments%\Visual Studio 2005\AddIns\CoolCommands. I would suggest unzipping to a permenant location, and not a temp folder.
- Open up VS 2005 command prompt (you must run this as an administrator)
- Navigate to where you unzipped Cool Commands and run Setup.bat.
- The step where devenv /setup is run, took about 1 minute to run on my computer, so you should expect this.
- Start up VS 2005 and load a project to test it out.
- Review this blog post for a good overview.
Summary While commands does not have a find and replace reference, which is what I exactly needed, the global remove and add reference was close enough. Also, all the extra features more then made of for the lack of an exact solution. Tempting fate, I decided to try installing Cool Commands for VS 2008. I copied cool commands to by Addins folder under 2008 and ran the setup from a VS 2008 command prompt, which succeeded without error. However, non of the options are available in the context menu, so it looks like it needs to be updated for VS 2008. References
I was doing some Google searches for more information on Linq and SqlCe 3.5 this morning. While I knew you could use the SqlMetal command line utility to get Linq to Sql Support for SqlCe 3.5, I made an incorrect assumption that Linq to Sql was available on the compact framework. For the love of god, could Microsoft please release a Compact Framework builder, akin to platform builder for Windows CE. For smart phones and other off the shelf devices, keep an official CF release, but for those of us writing applications bundle withed devices, let us determine what we need, and do not need in the compact framework.
Anyway, during my search, I came across Dan Vanderboom's blog. Dave is a Windows Mobile developer and shares some of the same pain that I do. He has alot of good information, and is currently working on a enterprise manager like application for SqlCe running on devices, but will not require active sync.
Thanks to Dave, I found 2 new applications for my smart phone.
- Task Manager - The name is somewhat deceiving, as it is allot more then just a task manager. You can view processes, window handles, device drivers, edit the registry, view network stats and more.
- WiFiFoFum - War driving application for the Pocket PC.
While searching for WSS 3.0 SP1 I came across a download for some SharePoint templates. I am impressed by the list at least, and if they work as good as they sound, they could replace some existing systems someday. I found a site that has allot of the templates installed and available for demo. Server Admin Templates: Server admin templates are created as site definitions, providing tighter integration and enhanced functionality within the Windows SharePoint Services platform. They will require a server administrator to install. If you do not have Central Server Admin rights, you can still install the site admin templates (see second list below) in the sites/workspaces that you own or administrate. - Absence Request and Vacation Schedule Management
- Help Desk
- Budgeting and Tracking Multiple Projects
- Inventory Tracking
- Bug Database
- IT Team Workspace
- Call Center
- Job Requisition and Interview Management
- Change Request Management
- Knowledge Base
- Compliance Process Support Site
- Lending Library
- Contacts Management
- Physical Asset Tracking and Management
- Document Library and Review
- Project Tracking Workspace
- Event Planning
- Room and Equipment Reservations
- Expense Reimbursement and Approval Site
- Sales Lead Pipeline
Site Admin Templates:Site admin templates are easy for site administrators to install in a template gallery without requiring server administration access. - Board of Directors
- Employee Training Scheduling and Materials
- Business Performance Rating
- Equity Research
- Case Management for Government Agencies
- Integrated Marketing Campaign Tracking
- Classroom Management
- Manufacturing Process Management
- Clinical Trial Initiation and Management
- New Store Opening
- Competitive Analysis Site
- Product and Marketing Requirements Planning
- Discussion Database
- Request for Proposal
- Disputed Invoice Management
- Sports League
- Employee Activities Site
- Team Work Site
- Employee Self-Service Benefits
- Timecard Management
Let this be my first post in my new Windows CE category. I have a feeling I will be writing more stuff about WinCE in the coming months. I wanted to jot down some notes from a couple of articles I read over at OpenNetCF for future review. Most of the high level concepts I already knew, but it's nice to get some details once in a while. Data Caching - No performance gain in keeping the data connection open for the life of an application.
- Cache reads are two orders of magnitude faster then a database read. As the article points out, this is interesting due to the fact that the database, and cached data were both stored in RAM.
- Several of the reader comments were interesting
- The first time a SqlCE Connection is opened, the database is loaded into shared memory
- One option is to have a connection opened for the life of the application, but not to use it, this is just to keep the engine loaded. Then open/close connections in your DAL as you normally would. This was recommended by Steve Lasker, a member of the SQL CE dev team. Steve also points out that reusing a command object and changing the text code hurt more then help, as you can't take advantage of query plans. Reusing a command object can sometimes help with the garbage collector.
- Another reader provided a example where it looks like he is doing an index scan and getting faster results then directly querying the database. It's hard to tell without running the sample code.
Garbage Collector - GC suspends all threads while it performs necessary actions, such as freeing and moving memory. Frequent GC's can have an adverse affect on performance.
- Remote performance monitor, which I blogged about before, is a valuable tool. This article provides a good example of how to interpret some of the numbers.
- Don't fear the GC, and take the time to understand what the numbers in remote performance monitor mean.
I'm also in search of a decent MVC and IoC framework for Windows CE. I'll probably be posting more on this later.
I jumped back into some compact framework development this weekend, and it was the first time since I had installed VS 2008 RTM. I went to connect to one of my CE devices via Visual Studio 2005, and was unable to connect. I also tried the remote performance monitor power toy. I finally went to check on what version of the CoreCon files I had installed, and noticed right away that there date modified was 11/7/2007. I coped these latest versions over to my CE device, and was able to connect again.
|