Tuesday, February 18, 2014

How to send automated emails with attachments from Windows Phone apps

Step1: Download the LiveMailMesage tool (note that it comes with a FREE trial) and add references to your Windows Phone application project.

Step2: Create a new LiveMailMesage object:
 
LiveMailMessage mailMessage = new LiveMailMessage();

Step3: Set a Live/Hotmail account needed to connect to Microsoft Live SMTP mail server:
 
 
mailMessage.MicrosoftAccountEmail = myMicrosoftAccountEmail ;
mailMessage.MicrosoftAccountPassword = myMicrosoftAccountPassword;

Step4: Set some mail data:
 
 
 
mailMessage.To = myTo;
mailMessage.Subject = mySubject;
mailMessage.Body = myBody; //accepts text or HTML

Step5:  Add some attachments (max attach limit size currently is 50MB) , note that you can also use different  resources or a IsolatedStorage path:

 
 
 
 
mailMessage.AddAttachment("\resources\file.jpg");
mailMessage.AddAttachment("\rex\file.wav");
mailMessage.AddAttachment("\myFolder\file.mp3");
mailMessage.AddAttachment("\downloads\file.mp4");
 
Step6: Set message event handlers (send operation is asyncronous and not UI blocking)
 
 
 
mailMessage.Error +=  mailMessage_Error;
mailMessage.MailSent += mailMessage_MailSent;
mailMessage.Progress += mailMessage_Progress;

Step7:  Send email (async, runs on a separated thread) :
 
mailMessage.SendMail();

Tuesday, February 11, 2014

Enable NuGet package restore in Visual Studio

Having a build process for each solution is very useful, but we can have some errors like these:
  • C:\Builds\[…]\.nuget\nuget.targets(76,9): error : Package restore is disabled by default. To give consent, open the Visual Studio Options dialog, click on Package Manager node and check ‘Allow NuGet to download missing packages during build.’ You can also give consent by setting the environment variable ‘EnableNuGetPackageRestore’ to ‘true’.
  • C:\Builds\[…]\.nuget\nuget.targets(76,9): error MSB3073: The command “”C:\Builds\[…]\.nuget\nuget.exe” install “C:\Builds\[…]\packages.config” -source “” -o “C:\Builds\[…]\packages”" exited with code 1.
We use NuGet in Visual Studio 2012 RC with TFS 2012 RC: we want to enable missing NuGet packages restoring and we would prefer to not check-in packages into source control. So, in Visual Studio Solution Explorer, right click on solution and click on “Enable NuGet Package Restore”:

Solution: Enable NuGet Package Restore

Do you want to configure this solution to download and restore missing NuGet packages during build? Yes, of course:
NuGet Package Manager: Enable NuGet Package Restore

A .nuget folder is added to the root of the solution.
NuGet Package Manager: finished configuring this solution to restore NuGet packages on build

 

Monday, February 10, 2014

I/O Device Error

What Are the Common I/O Device Error Messages?

Unfortunately, the I/O device error can generated more than one error message. Some of the most commonly encountered messages associated with the error include:
-          The request could not be performed because of an I/O device error
-          Only part of a readprocessmemory request was completed
-          Only part of a writeprocessmemory request was completed

Windows may display a “Windows error code” along with the plain language error message. The I/O device error codes that are associated with the error include: error 6, error 21, error 103, error 105, and error 131.

Why Does the I/O Device Error Occur?

There are a number of potential causes for I/O device errors on computers that run the Windows Operating System (OS). These include:
-          Outdated or corrupt driver installation for the affected hardware device.
-          Windows using an incompatible transfer mode for the hardware.
-          Faulty or loose connection with the hardware.
-          The portable media (CD, DVD, or SD card) is damaged or excessively dirty.

Basic I/O Device Error Troubleshooting

Before throwing away a “faulty” CD/DVD, or delving into more complex troubleshooting, there are some basic steps computer users can attempt to clear the I/O device error. If the steps do not solve the issue, they may help pinpoint what is causing the error to be thrown and save time in fixing the issue.

Step 1 – Restart the computer that is throwing the I/O device error.

Step 2 – Attempt to access the disk, drive, or portable media again.

Step 3 – If the error is still being thrown, try to access the disk on another computer (if available). This will help identify if the error is with the drive, IDE channel, or media (disk) itself.

Step 4 – If the disk/media opens on the alternative computer, there is an issue with the primary PC (drive, IDE, or connection). If it does not, there could be a problem with the media itself or IDE channel. If you do not have another computer available and the error is being thrown when attempting to read a CD/DVD or SD card, insert a different disk or card into the respective computer’s drive to see if it can be read. If it works, then the issue is with the disk/drive/device you are trying to use. If not, then it is with the IDE, drive, or connection on your primary computer.

How to Check Hardware Connections

Loose drive or hardware connections are a common cause of the I/O device error.

Step 1 – If the device throwing the error is an external hard drive, reseat the USB or fire wire connection to your computer.

Step 2 – If the error persists, connect the drive to an alternative USB port on the computer. If you are using a USB hub, connect the drive directly to one of the computer’s USB ports.

Step 3 – Obtain a replacement cable for the drive and reconnect to the computer.

Step 4 – Attempt to read or write to the drive or disk again. If the error continues to be thrown, the connection is not the likely cause of the problem. If you suspect the problem is with the internal hard drive on your computer, attempting to reconnect the drive is not recommended for the casual user as significant damage can result to the computer if the task is conducted improperly.

Change the IDE Channel Transfer Properties

Another cause of the I/O device error is that Windows has the transfer mode for the drive or device set incorrectly. The transfer mode can be changed or corrected by the end-user if logged in to the computer in administrator mode.

Step 1 – Select the “Start” menu button and then right click the “My Computer” icon.

Step 2 – Choose the “Manage” menu option on the subsequently displayed menu. Then, click or choose the “Device Manager” menu option located beneath the “Computer Management” window.

Step 3 – Select the menu icon to expand the “IDE ATA/ATAPI” controller display. There will be one or many listings for IDE ATA/ATAPI channels available on the computer.

Step 4 – Right click the channel that corresponds to the drive that is throwing the I/O device error. If you can’t determine which IDE channel is the appropriate one for the error being thrown on your computer choose the one labeled “Secondary IDE Channel.”

Step 5 – Select the “Properties” menu option followed by opening the “Advanced Settings” menu tab.

Step 6 – Choose the “PIO Only” menu option located in the “Transfer Mode” box. This will be the device corresponding for the drive throwing the error. On most computers, the correct option will be “Device 0.” Ensure you do not change the Primary IDE Channel Device 0 when manipulating the IDE properties since this is normally the system disk. Modifying the transfer mode for this disk can result in the Windows OS failing to work properly. On computers running the Windows 7 OS, uncheck the “Enable DMA” menu option to disable DMA. This is equivalent to the “PIO Only” setting on older versions of the Windows OS.

Step 7 – Select or click the “Ok” menu button and exit the configuration applications. On the Advanced Settings tab, select PIO Only in the Transfer Mode box for the device that represents the appropriate drive. Typically, this is Device 0. Then, click OK and exit all windows.

Step 8 – Restart your computer and test the drive or device that is throwing the I/O device error.

Step 9 – If the device or drive does not work after restart, then it may not be located under the secondary IDE channel device 0. If this is the case, change device 0’s transfer mode back to DMA, and repeat the process for the Primary IDE channel device 1 and then the Secondary IDE channel device 1 if the primary does not work (remembering not to change the Primary IDE channel device 0). After each change, restart the computer.

Verify the Status of the Device in Windows Device Manager

If changing the IDE channel device settings does not work, the drive status can be verified and troubleshoot via Windows Device Manager.

Step 1 – Select the “Start” menu and then click the “Control Panel” menu option.

Step 2 – Choose the “Performance and Maintenance” menu choice and then click the “System” menu option.

Step 3 – Choose the “Hardware” menu tab and open the “Device Manager.”

Step 4 – Locate the device that is throwing the I/O device error by expanding the menu items under the applicable category in the device manager.

Step 5 – If you note a red “X” on the menu icon located next to the device description, the hardware periphery has been disabled by the OS.

Step 6 – Open the “General” menu tab and select the “Enable Device” menu option located beneath the “Device Status” menu section.

Step 7 – Click the “Ok” menu button and follow the default menu prompts that follow. After the enabling device wizard exits, test the disk or drive that is throwing the error.

Step 8 – If the disk or drive does not work or continues to throw the same I/O error, select the “General” menu tab and click the “Troubleshoot” menu option found under the “Device Status” section.

Step 9 – Press the “Ok” menu button and follow the menu prompts. If there is still an error displayed, then the device driver likely requires updating.

Step 10 – Select the “Driver” menu tab. Then, click the “Update Driver” menu option and follow the default OS prompts.

Step 11 – Restart the computer and test the hardware throwing the I/O error.