mvc open pdf in browser : Convert pdf to jpg 300 dpi Library control class asp.net azure .net ajax Expert_.NET_Delivery_Using_NAnt_and_CruiseControl_.NET_200514-part1061

version1:
[attrib] Setting file attributes for 1 files to Normal.
[asminfo] Generated file 
'D:\dotNetDelivery\BuildArea\Source\CommonAssemblyInfo.cs'.
[attrib] Setting file attributes for 1 files to ReadOnly.
version2:
Versioning is working correctly, but neither the actual version number nor the VSS label-
ing has been used because we set the debugproperty to truefor the test run of the script.
Running with -D:debug=falsewould produce the following results instead, which show the
effects of using the true version number and labeling the VSS database.
version1:
[version] Build number '1.0.1.0'.
[attrib] Setting file attributes for 1 files to Normal.
[asminfo] Generated file
'D:\dotNetDelivery\BuildArea\Source\CommonAssemblyInfo.cs'.
[attrib] Setting file attributes for 1 files to ReadOnly.
version2:
[vsslabel] Applied label 'NAnt - 1.0.1.0' to '$/Solutions/Transformer/'.
CHAPTER 4 A SIMPLE CASE STUDY
120
Figure 4-9.Source code folder
Convert pdf to jpg 300 dpi - Convert PDF to JPEG images in C#.net, ASP.NET MVC, WinForms, WPF project
How to convert PDF to JPEG using C#.NET PDF to JPEG conversion / converter library control SDK
best pdf to jpg converter online; pdf to jpeg converter
Convert pdf to jpg 300 dpi - VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.net, ASP.NET MVC, WinForms, WPF project
Online Tutorial for PDF to JPEG (JPG) Conversion in VB.NET Image Application
convert pdf into jpg; advanced pdf to jpg converter
Now the label has been applied in VSS, as shown in Figure 4-10. Following the compila-
tion step, we can check that the version has been applied correctly as well.
CHAPTER 4 A SIMPLE CASE STUDY
121
Figure 4-10.VSS labels
VB.NET PDF Convert to Images SDK: Convert PDF to png, gif images
Convert PDF to Jpg, Png, Bmp, Gif, Tiff and page As PDFPage = doc.GetPage(0) ' Convert the first New PDFDocument(inputFilePath) ' Get the first page of PDF.
convert multi page pdf to jpg; change pdf to jpg image
C# PDF Convert to Images SDK: Convert PDF to png, gif images in C#
Support exporting PDF to multiple image forms, including Jpg, Png, Bmp, Gif, Tiff, Bitmap, .NET Graphics, and Description: Convert all the PDF pages to
conversion pdf to jpg; best convert pdf to jpg
[solution] Starting solution build.
[solution] Building 'TransformerEngine' [Debug] ...
[solution] 
warning CS1574: XML comment on 
attribute 'contents' that could not be found
[solution] 
warning CS1574: XML comment on 
attribute 'path' that could not be found
[solution] Building 'TransformerTests' [Debug] ...
[solution] Building 'TransformerGui' [Debug] ...
[resgen] Read in 83 resources from 
'D:\dotNetDelivery\BuildArea\Source\TransformerGui\MainForm.resx'
[resgen] Writing resource file...  Done.
The build step itself produces a few warnings, but on inspection they relate to the XML
comments rather than to problems with the compilation itself. We can remedy this by access-
ing the source code file specified in the message and resolving the path detailed in the XML
comments or removing the erroneous comment if it is superfluous. If we take a look in the
output directory, we can see the generated assets, as shown in Figure 4-11.
Figure 4-11.Generated assets
Also, let us take a look at the assembly version. If we were working with the 1.0.1.0 label,
we would see something similar to Figure 4-12.
CHAPTER 4 A SIMPLE CASE STUDY
122
Figure 4-12.Viewing the correct assembly version
test:
<?xml version="1.0" encoding="utf-8"?>1
[exec] Microsoft FxCopCmd v1.30
[exec] Copyright (C) 1999-2004 Microsoft Corp.  All rights reserved.
[exec] 
[exec] Loaded ComRules.dll...
[exec] Loaded DesignRules.dll...
[exec] Loaded GlobalizationRules.dll...
[exec] Loaded NamingRules.dll...
[exec] Loaded PerformanceRules.dll...
[exec] Loaded SecurityRules.dll...
[exec] Loaded UsageRules.dll...
[exec] Loaded TransformerEngine.dll...
[exec] Loaded TransformerGui.exe...
[exec] Initializing Introspection engine...
[exec] <NOTE>
[exec]   : Data flow analysis is currently disabled. Enabling this
[exec]   : functionality will increase the number of code correctness
[exec]   : checks that run but will also slow analysis by at least 2x.
[exec]   : To enable analysis globally, choose 'Settings' from 
[exec]   : the Tools menu and click 'Analysis Engines'. Select 
CHAPTER 4 A SIMPLE CASE STUDY
123
[exec]   : 'Introspection', click 'Settings' and check the box labeled 
[exec]   : 'Enable Control Flow Analysis'. To enable data flow analysis
[exec]   : for this project only, choose 'Options' from the Project menu.
[exec]   : Click the 'Spelling & Analysis' tab and set the 
[exec]   : 'Control Flow Analysis' drop-down to 'True'.
[exec] </NOTE>
[exec] Analyzing...
[exec] Could not initialize spell-checker for 'en-us' locale.
Is Office installed? To resolve this exception, install Office 
or disable spelling rules for namespaces, members, types, parameters
and resources.
[exec] Analysis Complete.
[exec] * Rules gave the following errors:
[exec] * 'TypeNamesShouldBeSpelledCorrectly' threw 1 exceptions:
[exec] * -Could not initialize spell-checker for 'en-us' locale.
Is Office installed? To resolve this exception, install Office
or disable spelling rules for namespaces, members, types, parameters
and resources.
[exec] *    at
Microsoft.Tools.FxCop.Sdk.Introspection.UsageRuleUtilities.GetSpellChecker()
[exec]    at
Microsoft.Tools.FxCop.Rules.Usage.TypeNamesShouldBeSpelledCorrectly ➥
.Check(TypeNode type)
[exec]    at Microsoft.Tools.FxCop.Engines.Introspection.AnalysisVisitor ➥
.CheckType(TargetType value, TypeNode type)
[exec] * 1 total rule exceptions.
[exec] Writing 8 messages...
[exec] Writing report to D:\dotNetDelivery\BuildArea\Reports\fxcop.xml...
[exec] Done.
[exec] D:\dotNetDelivery\Chapter4\Transformer.Build.xml(95,4):
[exec] External Program Failed: 
D:\dotNetDelivery\FxCop\1.30\FxCopCmd.exe (return code was 2)
[style] Processing 'D:\dotNetDelivery\BuildArea\Reports\fxcop.xml'
to 'D:\dotNetDelivery\BuildArea\Reports\fxcop.html'.
This target offers a lot of commentary. Essentially the NUnit tests have run silently, and
the report has been produced in the way we discussed earlier. FxCop has been complaining
about various things and generally been quite verbose, though in fact it has produced the
required report, despite the complaint that the “External Program Failed.” 
We will seek to address this in Chapter 6, though for now the outcome is satisfactory. We
can view the XML and HTML outputs in the reportsfolder, as shown in Figure 4-13.
CHAPTER 4 A SIMPLE CASE STUDY
124
Figure 4-13.Reporting outputs
document:
[ndoc] Initializing...
[ndoc] Merging XML documentation...
[ndoc] Building file mapping...
[ndoc] Loading XSLT files...
[ndoc] Generating HTML pages...
[ndoc] Generating HTML content file...
[ndoc] Compiling HTML Help file...
[ndoc] Done.
Documentation has been successfully generated, and it can be viewed in the docsfolder,
as shown in Figure 4-14. Reviewing the documentation will reveal that there are some missing
comments that will need to be addressed by the developer.
publish:
[copy] Copying 2 files to 'D:\dotNetDelivery\BuildArea\Distribution\'.
[zip] Zipping 2 files to 'D:\
dotNetDelivery\BuildArea\Publish\Transformer-Build-0.0.0.0.zip'.
CHAPTER 4 A SIMPLE CASE STUDY
125
Figure 4-14.Documentation output
The publishing step has worked with no problems, and the zipped assets (shown in Fig-
ure 4-15) can be viewed in the publishfolder.
Figure 4-15.Published assets
CHAPTER 4 A SIMPLE CASE STUDY
126
notify:
[echo] Notifying you of the build process success.
go:
BUILD SUCCEEDED - 1 non-fatal error(s), 7 warning(s)
Total time: 106.2 seconds.
Output completed (2 min 0 sec consumed) - Normal Termination
Following some final messages, including the stop-gap notifytarget execution, we can
see that the script has succeeded and has in fact met all of the aspects of the use case in its
execution. A job well done.
Opportunities for Refactoring
Before we move on to the deploy file, we should consider how the build file can be improved.
In Chapter 5, we will learn how standards impact the efficiency of the generation of build
files, and the ease with which a “standard” process can be achieved. But even without these
standards, we can improve the script we have written with a few simple changes. 
In terms of refactoring, we should consider two factors:
Duplication of settings.By its nature, an XML-based script is going to be heavily laden
with settings in the form of nested elements and attributes containing information about
the specifics of an operation. Removing these can save significant editing time, reduce the
rigidity of the script, and remove the risk of missing settings.
Duplication of script (or code).For the same reasons, reusing functionality is an obvious
area to examine as well.
The duplication of script functionality is worth assessing, but it is likely that we will gain
the greatest savings in this area when faced with multiple projects. Therefore, we will leave
this to one side until the next chapter.
We can make some gains in terms of settings in isolation, however. Again, when faced
with more scripts we may see more opportunities, but even now there are some items worth
examining.
A quick search over the script reveals 37 occurrences of the partial path D:\dotNetDelivery.
This is a little problematic if you are using the source code in a different location. Although an
Edit ➤Replace can tackle the immediate issue, this is not a helpful state of affairs if we are
working with multiple systems and hope to reuse the script.
CHAPTER 4 A SIMPLE CASE STUDY
127
Refactoring Settings
The obvious solution is to extract this information into a set of properties and use those prop-
erties throughout the solution. Here is an example:
<property name="core.directory" value="D:\dotNetDelivery\BuildArea"/>
<property name="core.source" value="${core.directory}\Source"/>
<property name="core.output" value="${core.directory}Output"/>
<property name="core.docs" value="${core.directory}Docs"/>
<property name="core.reports" value="${core.directory}Reports"/>
<property name="core.distribution" value="${core.directory}Distribution"/>
<property name="core.publish" value="${core.directory}Publish"/>
<property name="vss.dbpath" value="D:\dotNetDelivery\VSS\srcsafe.ini"/>
<property name="vss.path" value="$/Solutions/Transformer/"/>
We then use Edit ➤Replace to swap in the property names where appropriate. In just a
few minutes we have made significant strides in ensuring the flexibility of the script. We have
not particularly improved the reusability at this point, though.
Although the changes look simple, keep in mind these important points:
The naming conventions for the properties are very specific. core.*properties are identi-
fied as those related to the process but not necessarily the project. We would expect to be
able to make changes to these regardless of the project.
Removing duplication counts here, too. Wherever possible, edits should be isolated to
only one property. For example, core.directoryneeds to be altered only once.
Standard conventions are important. All of the directory values end with a trailing slash. It
is perhaps smarter to have a convention rather than worry about what the convention is.
Typically, I do not use a trailing slash in directory properties and then add extra slashes as
required when using other properties.
In addition to the properties listed at the beginning of this section, you’ll notice that the
word “Transformer” appears 21 times in the script. However, we will not address that right
now, because there are some broader considerations for project names (to be discussed in
Chapter 5). We will address these considerations later, though.
Note
The refactored build file is available in the source code as Transformer.Build.Refactored.xml
and behaves in the same way as the original.
Creating the Deploy File
We will now leave behind the build file and take a look at the deploy file. Deployment of this
particular application should be simple since there is no environment information to con-
sider. In this case we are deliberately taking a simple view of the actual deployment situation
and can consider other scenarios at a later stage.
CHAPTER 4 A SIMPLE CASE STUDY
128
Core Settings
Having refactored the settings in the build file, we can approach this script in a more enlight-
ened way. In the partial script that follows, I have set out the important properties needed for
the deployment, including where the assets can be obtained, where they should be deployed,
and a location to act as a work area:
<?xml version="1.0" encoding="utf-8" ?> 
<project name="Transformer" default="help">
<description>Deploy file for the Transformer application</description>
<property name="nant.onfailure" value="fail"/>
<property name="core.directory" value="D:\dotNetDelivery\BuildArea"/>
<property name="core.publish" value="${core.directory}\Publish"/>
<property name="core.deploy" value="D:\dotNetDelivery\TempDeploy"/>
<property name="core.environment" 
value="D:\dotNetDelivery\Program Files\Transformer"/>
<target 
name="go" 
description="The main target for full deploy process execution."
depends="selectversion, get, selectenvironments, createenvironments, ➥
position, configure, notify"
/>
selectversion
We need to be able to tell NAnt which version we want to deploy. The convention we used in
the build file was sys.version, and we will stick with that here. We can pass through a
sys.versionon the command line, which means no work is required in this section. However,
for the sake of convention, we will stick to using the debugswitch to select version 0.0.0.0.
Therefore, this target looks like this:
<target name="selectversion" 
description="Selects the correct version of the system.">
<if test="${debug}">
<property name="sys.version" value="0.0.0.0"/>
</if>
</target>
This target could become much more complex once we begin to take account of different
configurations, such as debugorrelease.
The notes on how to call the deploy script from the command line are in the helptarget
(which we look at a bit later).
CHAPTER 4 A SIMPLE CASE STUDY
129
Documents you may be interested
Documents you may be interested