How to: Specify build events (C#) - Visual Studio (Windows) (2023)

  • Article
  • 7 minutes to read

Applies to: How to: Specify build events (C#) - Visual Studio (Windows) (1)Visual Studio How to: Specify build events (C#) - Visual Studio (Windows) (2)Visual Studio for Mac How to: Specify build events (C#) - Visual Studio (Windows) (3)Visual Studio Code

Use build events to specify commands that run before the build starts or after the build finishes.

When a project is built, pre-build events are added to a file named PreBuildEvent.bat and post-build events are added to a file named PostBuildEvent.bat. If you want to ensure error checking, add your own error-checking commands to the build steps.

Specify a build event

  1. In Solution Explorer, select the project for which you want to specify the build event.

  2. On the Project menu, click Properties.

  3. Select the Build Events tab.

  4. In the Pre-build event command line box, specify the syntax of the build event.

    Note

    Pre-build events do not run if the project is up to date and no build is triggered.

  5. In the Post-build event command line box, specify the syntax of the build event.

    (Video) Project Properties | Part 7 Pre-Build and Post-build Events | C# Advanced #27

    Note

    Add a call statement before all post-build commands that run .bat files. For example, call C:\MyFile.bat or call C:\MyFile.bat call C:\MyFile2.bat.

  6. In the Run the post-build event box, specify under what conditions to run the post-build event.

    Note

    To add lengthy syntax, or to select any build macros from the Pre-build event/post-build event command line dialog box, click the ellipsis button (...) to display an edit box.

  1. In Solution Explorer, select the project for which you want to specify the build event.

  2. On the Project menu, click Properties (or from Solution Explorer, press Alt+Enter).

  3. Select Build > Events.

    How to: Specify build events (C#) - Visual Studio (Windows) (4)

  4. In the Pre-build event section, specify the syntax of the build event.

    Note

    Pre-build events do not run if the project is up to date and no build is triggered.

    (Video) Using Build Events to Copy the Latest Engine.dll File to the EngineTester Output Directory
  5. In the Post-build event section, specify the syntax of the build event.

    Note

    Add a call statement before all post-build commands that run .bat files. For example, call C:\MyFile.bat or call C:\MyFile.bat call C:\MyFile2.bat.

  6. In the When to run the post-build event section, specify under what conditions to run the post-build event.

The build event syntax can include any command that is valid at a command prompt or in a .bat file. The name of a batch file should be preceded by call to ensure that all subsequent commands are executed.

Note

If your pre-build or post-build event does not complete successfully, you can terminate the build by having your event action exit with a code other than zero (0), which indicates a successful action.

Macros

Commonly available "macros" (actually MSBuild properties) are listed at MSBuild common properties. For .NET SDK projects (.NET Core or .NET 5 and later), additional properties are listed at MSBuild properties for Microsoft.NET.Sdk.

In your scripts for build events, you might want to reference the values of some project-level variables such as the name of the project or the location of the output folder. In prior versions of Visual Studio, these were called macros. The equivalent to macros in recent versions of Visual Studio are MSBuild properties. MSBuild is the build engine that Visual Studio uses to process your project file when it performs a build. A build event in the IDE results in an MSBuild target in the project file. You can use any MSBuild property that is available in the target in your project file (for example, $(OutDir) or $(Configuration)) . The MSBuild properties that are available to you in these events depend on the files implicitly or explicitly imported in a project file, such .props and .targets files, and properties set in your project file, such as in PropertyGroup elements. Be careful to use the exact spelling of each property. No error is reported if you misspell a property; instead, an undefined property evaluates to an empty string.

For example, suppose you specify a pre-build event as follows:

(Video) C# Events - Creating and Consuming Events in Your Application

How to: Specify build events (C#) - Visual Studio (Windows) (5)

That pre-build event results in the following entry, called a Target in your project file:

 <Target Name="PreBuild" BeforeTargets="PreBuildEvent"> <Exec Command="echo Configuration: $(Configuration)&#xD;&#xA;echo DevEnvDir: $(DevEnvDir)&#xD;&#xA;echo OutDir: $(OutDir)&#xD;&#xA;echo ProjectDir: $(ProjectDir)&#xD;&#xA;echo VisualStudioVersion: $(VisualStudioVersion)&#xD;&#xA;echo AssemblySearchPaths: $(AssemblySearchPaths)&#xD;&#xA;echo AssemblyName: $(AssemblyName)&#xD;&#xA;echo BaseIntermediateOutputPath: $(BaseIntermediateOutputPath)&#xD;&#xA;echo CscToolPath: $(CscToolPath)" /> </Target>

The build event appears as a target that includes the Exec task with the input you specified as the Command. Newlines are encoded in the XML.

When you build the project in this example, the pre-build event prints the values of some properties. In this example, $(CscToolPath) doesn't produce any output, because it's not defined. It is an optional property that you can define in your project file to give the path to a customized instance of the C# compiler (for example, if you were testing a different version of csc.exe, or an experimental compiler).

Output from your build events is written to the build output, which can be found in the Output window. In the Show output from dropdown, choose Build.

Build started...1>------ Build started: Project: ConsoleApp4, Configuration: Debug Any CPU ------1>You are using a preview version of .NET. See: https://aka.ms/dotnet-core-preview1>Configuration: Debug1>DevEnvDir: C:\Program Files\Microsoft Visual Studio\2022\Preview\Common7\IDE\1>OutDir: bin\Debug\net6.0\1>ProjectDir: C:\source\repos\ConsoleApp4\ConsoleApp4\1>VisualStudioVersion: 17.01>ALToolsPath:1>AssemblySearchPaths: {CandidateAssemblyFiles};{HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}1>AssemblyName: ConsoleApp41>BaseIntermediateOutputPath: obj\1>CscToolsPath:1>Skipping analyzers to speed up the build. You can execute 'Build' or 'Rebuild' command to run analyzers.1>ConsoleApp4 -> C:\Users\ghogen\source\repos\ConsoleApp4\ConsoleApp4\bin\Debug\net6.0\ConsoleApp4.dll

Example

The following procedure shows how to set the minimum operating system version in the application manifest by using an .exe command that is called from a post-build event (the .exe.manifest file in the project directory). The minimum operating system version is a four-part number such as 4.10.0.0. To set the minimum operating system version, the command will change the <dependentOS> section of the manifest:

<dependentOS> <osVersionInfo> <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" /> </osVersionInfo></dependentOS>

Create an .exe command to change the application manifest

  1. Create a new Console App project for the command. Name the project ChangeOSVersionCS.

  2. In Program.cs, add the following line to the other using directives at the top of the file:

    using System.Xml;
  3. In the ChangeOSVersionCS namespace, replace the Program class implementation with the following code:

    class Program{ /// <summary> /// This function sets the minimum operating system version for a ClickOnce application. /// </summary> /// <param name="args"> /// Command Line Arguments: /// 0 - Path to application manifest (.exe.manifest) /// 1 - Version of OS ///</param> static void Main(string[] args) { string applicationManifestPath = args[0]; Console.WriteLine("Application Manifest Path: " + applicationManifestPath); // Get version name. Version osVersion = null; if (args.Length >=2 ){ osVersion = new Version(args[1]); }else{ throw new ArgumentException("OS Version not specified."); } Console.WriteLine("Desired OS Version: " + osVersion.ToString()); XmlDocument document; XmlNamespaceManager namespaceManager; namespaceManager = new XmlNamespaceManager(new NameTable()); namespaceManager.AddNamespace("asmv1", "urn:schemas-microsoft-com:asm.v1"); namespaceManager.AddNamespace("asmv2", "urn:schemas-microsoft-com:asm.v2"); document = new XmlDocument(); document.Load(applicationManifestPath); string baseXPath; baseXPath = "/asmv1:assembly/asmv2:dependency/asmv2:dependentOS/asmv2:osVersionInfo/asmv2:os"; // Change minimum required operating system version. XmlNode node; node = document.SelectSingleNode(baseXPath, namespaceManager); node.Attributes["majorVersion"].Value = osVersion.Major.ToString(); node.Attributes["minorVersion"].Value = osVersion.Minor.ToString(); node.Attributes["buildNumber"].Value = osVersion.Build.ToString(); node.Attributes["servicePackMajor"].Value = osVersion.Revision.ToString(); document.Save(applicationManifestPath); }}

    The command takes two arguments: the path of the application manifest (that is, the folder in which the build process creates the manifest, typically Projectname.publish), and the new operating system version.

  4. Build the project.

  5. Copy the .exe file to a directory such as C:\TEMP\ChangeOSVersionVB.exe.

Next, invoke this command in a post-build event to modify the application manifest.

Invoke a post-build event to modify the application manifest

  1. Create a new Windows Forms App project and name it CSWinApp.

    (Video) Executing C# class method as pre-build or post-build events or operations in .net core 3.1

  2. With the project selected in Solution Explorer, on the Project menu, choose Properties.

  3. In the Project Designer, locate the Publish page and set Publishing location to C:\TEMP.

  4. Publish the project by clicking Publish Now.

    The manifest file is built and saved to C:\TEMP\CSWinApp_1_0_0_0\CSWinApp.exe.manifest. To view the manifest, right-click the file, click Open with, select Select the program from a list, and then click Notepad.

    Search in the file for the <osVersionInfo> element. For example, the version might be:

    <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
  5. Back in the Project Designer, click the Build Events tab.

  6. In the Post-build event section, enter the following command:

    C:\TEMP\ChangeOSVersionCS.exe "$(TargetPath).manifest" 5.1.2600.0

    When you build the project, this command changes the minimum operating system version in the application manifest to 5.1.2600.0.

    Because the $(TargetPath) macro expresses the full path for the executable being created, $(TargetPath).manifest specifies the application manifest created in the bin directory. Publishing copies this manifest to the publishing location that you set earlier.

  7. Publish the project again.

    The manifest version should now read:

    <os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />

Note

(Video) C# Events and Delegates Made Simple | Mosh

Some scenarios may require more intelligent build actions than the build events are capable of. For example, for many common code-generation scenarios, you need to handle clean and rebuild operations, and you might want to enable incremental build for code-generation steps, so that the step only runs if the output is out-of-date with respect to the inputs. For such scenarios, consider creating a custom target that specifies AfterTargets or BeforeTargets to run during a specific point in the build process, and for further control in advanced scenarios, consider creating a custom task.

See also

  • Build Events page, Project Designer (C#)
  • Pre-build event/Post-build event command line dialog box
  • How to: Specify build events (Visual Basic)
  • Compile and build

FAQs

What is build events in Visual Studio? ›

Applies to: Visual Studio Visual Studio for Mac Visual Studio Code. Use build events to specify commands that run before the build starts or after the build finishes. When a project is built, pre-build events are added to a file named PreBuildEvent. bat and post-build events are added to a file named PostBuildEvent.

How do I get the build command in Visual Studio? ›

To compile source files from within the Visual Studio IDE, choose the Build command from the Build menu. When you build project files by using the Visual Studio IDE, you can display information about the associated vbc command and its switches in the output window.

How to build specific targets in solutions by using MSBuild exe? ›

To build a specific target of a specific project in a solution. At the command line, type MSBuild.exe <SolutionName>. sln , where <SolutionName> corresponds to the file name of the solution that contains the target that you want to execute.

How do I add an event in Visual Studio? ›

To add an event handler to a dialog box control:

Right-click the control for which you want to handle the notification event. On the shortcut menu, choose Add Event Handler to display the Event Handler Wizard. Select the event in the Message type box to add to the class selected in the Class list box.

How do I change build mode in Visual Studio? ›

To change the build configuration, either:
  1. On the toolbar, choose either Debug or Release from the Solution Configurations list. or.
  2. From the Build menu, select Configuration Manager, then select Debug or Release.
Jan 20, 2023

How do you run a build command? ›

All build commands are executed via NPM Scripts.
  1. npm run dev. Starts a Node. js local development server. ...
  2. npm run build. Build assets for production. ...
  3. npm run unit. Run unit tests in JSDOM with Jest. ...
  4. npm run e2e. Run end-to-end tests with Nightwatch. ...
  5. npm run lint. Runs eslint and reports any linting errors in your code.

How do you create a build command? ›

  1. Run the Custom Command command.
  2. Select the Build Project command in the Command drop-down list. ...
  3. In the Run text box, type the following: C:\MsDevPath\msdev project.dsp /make /rebuild. ...
  4. Turn on the Parse Source Links option. ...
  5. Turn on the Save Files First option so that your file is saved before building the project.

What is go build command? ›

go build command is generally used to compile the packages and dependencies that you have defined/used in your project. So how go build is executing internally, what compiler executes, which directories created or deleted; Those all questions are answered by go build command flags.

How do I set environment variables in MSBuild? ›

Click on System and Security and then on System. In the left pane, click on Advanced system settings. At the very bottom of the pop up, click on Environment Variables. Edit the Path variable and append the folder's path that contains the MSBuild.exe to it (e.g., ;C:\Windows\Microsoft.NET\Framework64\v4.

How do I change target framework for all projects in solution? ›

To change the target Framework
  1. In Visual Studio, in Solution Explorer, select your project. ...
  2. On the menu bar, select File, Open, File. ...
  3. In the project file, locate the entry for the target Framework version. ...
  4. Change the value to the Framework version you want, such as v3. ...
  5. Save the changes and close the editor.
Nov 23, 2021

How to use MSBuild in C#? ›

In this article
  1. Install MSBuild.
  2. Create an MSBuild project.
  3. Examine the project file.
  4. Targets and tasks.
  5. Add a target and a task.
  6. Build the target.
  7. Build properties.
  8. Examine a property value.
Jan 9, 2023

How do I run a build solution in Visual Studio code? ›

Running the solution from Visual Studio Code
  1. Create a “. vscode” folder at the solution level.
  2. Create a “Tasks. json” file.
  3. Create a “launch. json” file.
Jul 21, 2020

What build command does Visual Studio use? ›

By default, the Visual Studio IDE uses native project build systems based on MSBuild. You can invoke MSBuild directly to build projects without using the IDE. You can also use the devenv command to use Visual Studio to build projects and solutions.

What is clean build command? ›

The clean build command refers to the command that you would run to rebuild your C/C++ project from scratch (ie it would first clean all possible past artifacts (already compiled files etc…) and rebuild everything.

How to assign an event in C#? ›

Use "event" keyword with delegate type variable to declare an event. Use built-in delegate EventHandler or EventHandler<TEventArgs> for common events. The publisher class raises an event, and the subscriber class registers for an event and provides the event-handler method.

How do I add an event code? ›

To install the event code:
  1. Select the Account option from the navigation bar. ...
  2. Select the Business Information option from the dropdown menu.
  3. In the sidebar, select Customizations under the Business Settings section.
  4. Paste the copied event code into the Conversion Pixels area.
Aug 1, 2022

How do I set an event? ›

Create an event
  1. On your Android phone or tablet, open the Calendar app .
  2. Tap Create Event .
  3. Optional: If you invite guests, add them to the event. Then, tap and drag the meeting block to a time that works for everyone. ...
  4. Swipe up to edit event details like: Title. Location. ...
  5. Tap Save.

How do you edit in build mode? ›

Press and hold the button you use to enter building mode to edit the piece.

How do I change build configuration in Visual Studio code? ›

Open the Configuration Manager dialog box. In the Active solution configuration drop-down list, select the configuration you want. In the Project contexts pane, for every project, select the Configuration and Platform you want, and select whether to Build it and whether to Deploy it.

How do I run a build manually? ›

Starting builds manually
  1. Go to your Dashboard and select the app you need.
  2. Select Start/Schedule a Build. ...
  3. Enter the branch you want to run into the Branch input field. ...
  4. Optionally, enter a build message in the Message field. ...
  5. Select a Workflow that will run from the Workflow menu.

How do I run a build file? ›

To run the ant build file, open up command prompt and navigate to the folder, where the build. xml resides, and then type ant info. You could also type ant instead. Both will work,because info is the default target in the build file.

How do I run a build go file? ›

Add the Go install directory to your system's shell path. That way, you'll be able to run your program's executable without specifying where the executable is. Once you've updated the shell path, run the go install command to compile and install the package. Run your application by simply typing its name.

How do I find my Windows build command? ›

Right-click the start menu and select Run. In the Run window, type winver and click OK. The window that opens will display the Windows 10 build that is installed.

How to build a project using CMD? ›

In the user interface, building a project is a single step. Behind the scenes, however, there are two steps. First, Java source files are compiled into Java class files.
...
Build a Project from the Command Line
  1. Check Prerequisites.
  2. Compile Class Files.
  3. Preverify Class Files.

What is the default output of go build? ›

By default go build will generate an executable for the current platform and architecture. For example, if built on a linux/386 system, the executable will be compatible with any other linux/386 system, even if Go is not installed.

What are go commands? ›

1.3 Go commands
  • Go commands. The Go language comes with a complete set of command operation tools. ...
  • go build. This command is for compiling tests. ...
  • go clean. ...
  • go fmt and gofmt. ...
  • go get. ...
  • go install. ...
  • go test. ...
  • godoc.

Why go build is fast? ›

Golang doesn't rely on a virtual machine for code compilation and is directly compiled from the binary file. That's why it is much faster than Java when it comes to application development. Golang's automatic garbage collection also contributes to its speed and makes it much faster than Java.

How do I set Environment Variables manually? ›

To create or modify environment variables on Windows 10:
  1. On the Windows taskbar, right-click the Windows icon and select System.
  2. In the Settings window, under Related Settings, click Advanced system settings. ...
  3. On the Advanced tab, click Environment Variables. ...
  4. Click New to create a new environment variable.

How do I set Environment Variables permanently? ›

You can set an environment variable permanently by placing an export command in your Bash shell's startup script " ~/.bashrc " (or "~/.bash_profile ", or " ~/.profile ") of your home directory; or " /etc/profile " for system-wide operations. Take note that files beginning with dot ( . ) is hidden by default.

How do I set Environment Variables in Visual Studio? ›

In Visual Studio, we can set ASPNETCORE_ENVIRONMENT in the debug tab of project properties. Open project properties by right clicking on the project in the solution explorer and select Properties. This will open properties page. Click on Debug tab and you will see Environment Variables as shown below.

How do I retarget an application to a framework version? ›

Steps to Complete:
  1. In your Solution Explorer, right-click your project and select Properties.
  2. In Properties, go to the Application option on the side menu.
  3. Locate the Target framework dropdown and select the framework version you need.
Apr 6, 2020

How do I change the default framework in Visual Studio? ›

In Visual Studio:
  1. Right-click on your project.
  2. Select Properties.
  3. Select the Application tab.
  4. Change the Target Framework to the desired framework.

How do I set properties in MSBuild? ›

MSBuild lets you set properties on the command line by using the -property (or -p) switch. These global property values override property values that are set in the project file. This includes environment properties, but does not include reserved properties, which cannot be changed.

What is the difference between MSBuild and Visual Studio build? ›

Visual Studio determines the build order and calls into MSBuild separately (as needed), all completely under Visual Studio's control. Another difference arises when MSBuild is invoked with a solution file, MSBuild parses the solution file, creates a standard XML input file, evaluates it, and executes it as a project.

Is MSBuild a build tool? ›

MSBuild is a build tool that helps automate the process of creating a software product, including compiling the source code, packaging, testing, deployment and creating documentations. With MSBuild, it is possible to build Visual Studio projects and solutions without the Visual Studio IDE installed.

How to compile C in Visual Studio Code? ›

After stopping the C file, go & click the File button at the top left corner of the Visual Studio Code Editor, and select the Settings via Preferences, as shown below image. After clicking the Settings, it shows the image below. In this image, select the extension button to set the settings for the C Compiler.

Is rebuild the same as clean and build? ›

Rebuild solution will clean and then build the solution from scratch, ignoring anything it's done before. The difference between this and "Clean, followed by Build" is that Rebuild will clean-then-build each project, one at a time, rather than cleaning all and then building all.

How does build work in Visual Studio? ›

Visual Studio determines the build order and calls into MSBuild separately (as needed), all completely under Visual Studio's control. Another difference arises when MSBuild is invoked with a solution file, MSBuild parses the solution file, creates a standard XML input file, evaluates it, and executes it as a project.

What is post build event? ›

Pre/Post build events are useful when we wish to perform some operation before/after a project is built. These operations are nothing but the Shell commands being used from the command line. A build event can be formed using a single, multiple, or conditional commands.

What is the difference between compile and build? ›

Compiling is the act of turning source code into object code. Linking is the act of combining object code with libraries into a raw executable. Building is the sequence composed of compiling and linking, with possibly other tasks such as installer creation.

What built in commands? ›

builtin command is used to run a shell builtin, passing it arguments(args), and also to get the exit status. The main use of this command is to define a shell function having the same name as the shell builtin by keeping the functionality of the builtin within the function.

What does cmd disk Clean do? ›

Diskpart Erase/Clean will permanently erase/destroy all data on the selected drive. Please make certain that you are erasing the correct disk. Remove all additional drives from the computer excluding the drive you are booting from and the drive you want to Erase/Clean.

How do I use clean all command? ›

To clean a disk:
  1. At a command prompt, type diskpart.
  2. At the DISKPART prompt, type select disk 0.
  3. At the DISKPART prompt, type clean all.
  4. At the DISKPART prompt, type exit.
Jul 20, 2021

What is Microsoft Build event? ›

Microsoft Build (often stylised as //build/) is an annual conference event held by Microsoft, aimed at software engineers and web developers using Windows, Microsoft Azure and other Microsoft technologies.

What is the difference between build and publish in Visual Studio? ›

Build compiles the source code into a (hopefully) runnable application. Publish takes the results of the build, along with any needed third-party libraries and puts it somewhere for other people to run it.

What is the difference between build and compile in Visual Studio? ›

Compiling is the act of turning source code into object code. Linking is the act of combining object code with libraries into a raw executable. Building is the sequence composed of compiling and linking, with possibly other tasks such as installer creation.

What is a Windows event type? ›

Event Type

Description. Information. An event that describes the successful operation of a task, such as an application, driver, or service. For example, an Information event is logged when a network driver loads successfully. Warning.

How do you use Microsoft Build? ›

In this article
  1. Install MSBuild.
  2. Create an MSBuild project.
  3. Examine the project file.
  4. Targets and tasks.
  5. Add a target and a task.
  6. Build the target.
  7. Build properties.
  8. Examine a property value.
Jan 9, 2023

What does build mean in Windows? ›

A build number represents a compilation of the operating system code at a particular point in time. For example, Microsoft compiles a new build of Windows 10 every day, and there are many branches and build labs at the company that handles this procedure.

How do I build a project in Visual Studio? ›

If the Visual Studio development environment is already open, you can create a new project by choosing File > New > Project on the menu bar. You can also select the New Project button on the toolbar, or press Ctrl+Shift+N.

What is build and deployment process? ›

Build means to Compile the project. Deploy means to Compile the project & Publish the output. For web applications no need to deploy or nothing need to do at client side except simple browser with url.

What is the difference between build deploy and release? ›

However, modern software delivery practices encourage us to separate the concepts. Let's define the terms with more precise language and look at the practical benefits of the distinction: Deployment is when you install a software version on an environment. Release is when you make software available to a user.

What is build process in C? ›

C Build Process is the process of converting the high level source code representation of your embedded software into an executable binary image. This Process involves many steps and tools but the main three distinct steps of this process are: Each of the source files must be compiled or assembled into an object file.

What is the purpose of the build () and compile ()? ›

Build is a compiled version of a program. Compile means, convert (a program) into a machine-code or lower-level form in which the program can be executed.

How to build a project in C#? ›

Open Visual Studio, and choose Create a new project in the Start window. In the Create a new project window, select All languages, and then choose C# from the dropdown list. Choose Windows from the All platforms list, and choose Console from the All project types list.

Videos

1. How to Create Setup.exe in Visual Studio 2019 | FoxLearn
(Fox Learn)
2. Optimizing msbuild (C#/.NET/C++) build performance with Visual Studio 2022
(Microsoft Visual Studio)
3. Intro to Windows Services in C# - How to create, install, and use a service using Topshelf
(IAmTimCorey)
4. How to Create Setup .exe in Visual Studio 2022 Step By Step
(Coding Jackpot)
5. Intro to Windows Forms (WinForms) in .NET 6
(IAmTimCorey)
6. Paint Application in C# Visual Studio By Rohit Programming Zone
(Rohit Programming Zone)
Top Articles
Latest Posts
Article information

Author: Greg O'Connell

Last Updated: 03/01/2023

Views: 6280

Rating: 4.1 / 5 (62 voted)

Reviews: 85% of readers found this page helpful

Author information

Name: Greg O'Connell

Birthday: 1992-01-10

Address: Suite 517 2436 Jefferey Pass, Shanitaside, UT 27519

Phone: +2614651609714

Job: Education Developer

Hobby: Cooking, Gambling, Pottery, Shooting, Baseball, Singing, Snowboarding

Introduction: My name is Greg O'Connell, I am a delightful, colorful, talented, kind, lively, modern, tender person who loves writing and wants to share my knowledge and understanding with you.