got this pretty solidly setup now

This commit is contained in:
Mike 2019-02-10 22:04:48 -08:00
parent 4a49a86ae7
commit 614b636c0a
10 changed files with 140 additions and 29 deletions

View File

@ -1,12 +1,13 @@
# FNA VSCode Template # FNA VSCode Template
Start new FNA projects quickly and easily with handy setup scripts, a versatile boilerplate project, and convenient Visual Studio Code integration. Start new FNA projects with Nez quickly and easily with handy setup scripts, a versatile boilerplate project, and convenient Visual Studio Code integration.
## Features ## ## Features ##
- Super simple setup scripts that download and install FNA and its native libraries for you! - Super simple setup scripts that download and install Nez, FNA and its native libraries for you
- Boilerplate project already included -- no need to wrestle with MSBuild configurations or writing yet another Game1 class. - Boilerplate project already included -- no need to wrestle with MSBuild configurations or writing yet another Game1 class
- Visual Studio Code tasks for building and running your game, cleaning/restoring your project, and compiling .fx files! - Visual Studio Code tasks for building and running your game, cleaning/restoring your project, compiling .fx files and building content with the MonoGame Pipeline tool
- In-editor debugging support with the Mono Debugger. - In-editor debugging support with the Mono Debugger
- Supports Windows and macOS!
## Prerequisites ## ## Prerequisites ##
- [Visual Studio Code](https://code.visualstudio.com) - [Visual Studio Code](https://code.visualstudio.com)
@ -17,17 +18,16 @@ Start new FNA projects quickly and easily with handy setup scripts, a versatile
- [7-Zip](https://www.7-zip.org) (required for Windows to decompress fnalibs) - [7-Zip](https://www.7-zip.org) (required for Windows to decompress fnalibs)
- [Microsoft DirectX SDK (June 2010)](https://www.microsoft.com/en-us/download/details.aspx?id=6812) (required for building effects -- on Mac, [you can use Wine to run this](https://github.com/AndrewRussellNet/FNA-Template#linuxmacos-installing-the-directx-sdk-on-wine)) - [Microsoft DirectX SDK (June 2010)](https://www.microsoft.com/en-us/download/details.aspx?id=6812) (required for building effects -- on Mac, [you can use Wine to run this](https://github.com/AndrewRussellNet/FNA-Template#linuxmacos-installing-the-directx-sdk-on-wine))
## Setup Instructions ## ## Setup Instructions ##
1. Download and unzip the ZIP archive. 1. Download and unzip the ZIP archive (don't clone the repo!)
2. Copy+paste the resulting folder to your desired project directory. 2. Copy+paste the resulting folder to your desired project directory
3. Run `./getFNA.sh` (macOS) or `./win_getFNA.ps1` (Windows PowerShell) to download the latest FNA and fnalibs to the directory. (You can run this script again if you want to update either FNA or the libraries at a later point.) 3. Run `./getFNA.sh` (macOS) to download the latest Nez, FNA and fnalibs to the directory. You can run this script again if you want to update either FNA or the libraries at a later point. Nez is setup as a submodule so you can update it in the normal fashion.
4. Rename `project_name` to your project's name (the folder and the csproj file) 4. Open the newly-created and named `code-workspace` file (or open the project folder in Visual Studio Code or the top-level sln in Visual Studio)
5. Open the newly-renamed project folder (NOT the root folder!) in Visual Studio Code.
6. Do a Find+Replace for "project_name" (case sensitive!) to the new name of your project.
7. Run the "Restore Project" build task.
That's it! Now you're ready to build and run the base project! That's it! Now you're ready to build and run the base project!
## Build Tasks ## ## Build Tasks ##
- **Restore Project:** Restores the .csproj. Run this before building for the first time, and run it again whenever you change the .csproj file. - **Restore Project:** Restores the .csproj. Run this before building for the first time, and run it again whenever you change the .csproj file.
- **Build (Debug/Release):** Builds the project with the specified configuration but does not run it. This also copies over everything in the Content/ subdirectory and the fnalibs. - **Build (Debug/Release):** Builds the project with the specified configuration but does not run it. This also copies over everything in the Content/ subdirectory and the fnalibs.
@ -36,6 +36,7 @@ That's it! Now you're ready to build and run the base project!
- **Build Effects:** Runs `fxc.exe` on all of the `.fx` files found in the Content/ subdirectories and outputs corresponding `.fxb` files that can be loaded through the Content Manager at runtime. - **Build Effects:** Runs `fxc.exe` on all of the `.fx` files found in the Content/ subdirectories and outputs corresponding `.fxb` files that can be loaded through the Content Manager at runtime.
- **Build Content:** Runs good old MGCB.exe on the Content.mgcb file - **Build Content:** Runs good old MGCB.exe on the Content.mgcb file
- **Force Build Content:** Force builds the content (MGCB.exe -r) - **Force Build Content:** Force builds the content (MGCB.exe -r)
- **Open Pipeline Tool:** Opens the MonoGame Pipeline tool
## License and Credits ## ## License and Credits ##

View File

@ -21,7 +21,7 @@ function downloadFNA()
echo "Downloading FNA..." echo "Downloading FNA..."
git -C $MY_DIR clone https://github.com/FNA-XNA/FNA.git --recursive git -C $MY_DIR clone https://github.com/FNA-XNA/FNA.git --recursive
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "Finished downloading!" echo "Finished downloading!\n"
else else
echo >&2 "ERROR: Unable to download successfully. Maybe try again later?" echo >&2 "ERROR: Unable to download successfully. Maybe try again later?"
fi fi
@ -34,7 +34,7 @@ function updateFNA()
echo "Updating to the latest git version of FNA..." echo "Updating to the latest git version of FNA..."
git -C "$MY_DIR/FNA" pull --recurse-submodules git -C "$MY_DIR/FNA" pull --recurse-submodules
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "Finished updating!" echo "Finished updating!\n"
else else
echo >&2 "ERROR: Unable to update." echo >&2 "ERROR: Unable to update."
exit 1 exit 1
@ -100,13 +100,20 @@ if [[ $newProjectName = 'exit' ]]; then
exit 1 exit 1
fi fi
sed -i '' "s/project_name/$newProjectName/g" project_name.code-workspace
sed -i '' "s/project_name/$newProjectName/g" project_name.sln
sed -i '' "s/project_name/$newProjectName/g" project_name/project_name.sln
sed -i '' "s/project_name/$newProjectName/g" project_name/project_name.csproj sed -i '' "s/project_name/$newProjectName/g" project_name/project_name.csproj
sed -i '' "s/project_name/$newProjectName/g" project_name/Game1.cs sed -i '' "s/project_name/$newProjectName/g" project_name/Game1.cs
sed -i '' "s/project_name/$newProjectName/g" project_name/Program.cs sed -i '' "s/project_name/$newProjectName/g" project_name/Program.cs
sed -i '' "s/project_name/$newProjectName/g" project_name/.vscode/tasks.json sed -i '' "s/project_name/$newProjectName/g" project_name/.vscode/tasks.json
sed -i '' "s/project_name/$newProjectName/g" project_name/.vscode/launch.json sed -i '' "s/project_name/$newProjectName/g" project_name/.vscode/launch.json
mv project_name.code-workspace "$newProjectName.code-workspace"
mv project_name.sln "$newProjectName.sln"
mv project_name/project_name.sln "project_name/$newProjectName.sln"
mv project_name/project_name.csproj "project_name/$newProjectName.csproj" mv project_name/project_name.csproj "project_name/$newProjectName.csproj"
mv project_name/project_name.csproj.user "project_name/$newProjectName.csproj.user"
mv project_name "$newProjectName" mv project_name "$newProjectName"
git init git init
@ -115,7 +122,4 @@ cd Nez.FNA
git submodule init git submodule init
git submodule update git submodule update
sleep 10 printf "\n\nManually run the following command:\n\nnuget restore Nez.FNA/Nez/Nez.sln && msbuild Nez.FNA/Nez/Nez.sln && msbuild /t:restore $newProjectName\n\n"
nuget restore Nez.FNA/Nez/Nez.sln
msbuild Nez.FNA/Nez/Nez.sln

View File

@ -0,0 +1,14 @@
{
"folders": [
{
"path": "project_name"
},
{
"path": "Nez.FNA/Nez/Nez.Portable"
}
],
"settings": {
"omnisharp.autoStart": true,
"csharp.referencesCodeLens.enabled": false
}
}

54
project_name.sln Normal file
View File

@ -0,0 +1,54 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x86 = Release|x86
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D488C5AD-5192-4A08-88FD-22219586ED9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D488C5AD-5192-4A08-88FD-22219586ED9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D488C5AD-5192-4A08-88FD-22219586ED9F}.Debug|x86.ActiveCfg = Debug|x86
{D488C5AD-5192-4A08-88FD-22219586ED9F}.Debug|x86.Build.0 = Debug|x86
{D488C5AD-5192-4A08-88FD-22219586ED9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D488C5AD-5192-4A08-88FD-22219586ED9F}.Release|Any CPU.Build.0 = Release|Any CPU
{D488C5AD-5192-4A08-88FD-22219586ED9F}.Release|x86.ActiveCfg = Release|x86
{D488C5AD-5192-4A08-88FD-22219586ED9F}.Release|x86.Build.0 = Release|x86
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|x86.ActiveCfg = Debug|Any CPU
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|x86.Build.0 = Debug|Any CPU
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|Any CPU.Build.0 = Release|Any CPU
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|x86.ActiveCfg = Release|Any CPU
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Release|x86.Build.0 = Release|Any CPU
{F6DF8289-8138-41C7-B747-E672AFEE44A4}.Debug|Any CPU.ActiveCfg = Debug|x86
{F6DF8289-8138-41C7-B747-E672AFEE44A4}.Debug|Any CPU.Build.0 = Debug|x86
{F6DF8289-8138-41C7-B747-E672AFEE44A4}.Debug|x86.ActiveCfg = Debug|x86
{F6DF8289-8138-41C7-B747-E672AFEE44A4}.Debug|x86.Build.0 = Debug|x86
{F6DF8289-8138-41C7-B747-E672AFEE44A4}.Release|Any CPU.ActiveCfg = Release|x86
{F6DF8289-8138-41C7-B747-E672AFEE44A4}.Release|Any CPU.Build.0 = Release|x86
{F6DF8289-8138-41C7-B747-E672AFEE44A4}.Release|x86.ActiveCfg = Release|x86
{F6DF8289-8138-41C7-B747-E672AFEE44A4}.Release|x86.Build.0 = Release|x86
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "project_name", "project_name\project_name.csproj", "{8C576ECC-147D-4B4A-8EC1-56533D26A178}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FNA", "FNA\FNA.csproj", "{35253CE1-C864-4CD3-8249-4D1319748E8F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nez.FNA", "Nez.FNA\Nez.FNA\Nez.FNA.csproj", "{11A5855C-B12C-4F8D-B935-56F3D0B671C3}"
EndProject
Global
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8C576ECC-147D-4B4A-8EC1-56533D26A178}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8C576ECC-147D-4B4A-8EC1-56533D26A178}.Debug|Any CPU.Build.0 = Debug|Any CPU
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35253CE1-C864-4CD3-8249-4D1319748E8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{11A5855C-B12C-4F8D-B935-56F3D0B671C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{11A5855C-B12C-4F8D-B935-56F3D0B671C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
EndGlobalSection
EndGlobal

View File

@ -1,7 +1,7 @@
{ {
// This prevents Omnisharp from prematurely creating obj and bin directories. // This prevents Omnisharp from prematurely creating obj and bin directories.
// Change this to true after changing the name of the csproj file and running Restore Project. // Change this to true after changing the name of the csproj file and running Restore Project.
"omnisharp.autoStart": false, "omnisharp.autoStart": true,
// This just circumvents annoying default behavior with the C# extension... // This just circumvents annoying default behavior with the C# extension...
// If you really like Code Lens, feel free to change this. // If you really like Code Lens, feel free to change this.
@ -12,6 +12,8 @@
"bin": true, "bin": true,
"CompiledContent/bin": true, "CompiledContent/bin": true,
"CompiledContent/obj": true, "CompiledContent/obj": true,
"CompiledContent/.mgstats": true "CompiledContent/.mgstats": true,
"*.csproj.user": true,
"*.csproj": true
} }
} }

View File

@ -112,5 +112,13 @@
}, },
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{
"label": "Open Pipeline Tool",
"type": "shell",
"group": "build",
"command": "export MONOGAME_PIPELINE_PROJECT=${workspaceFolder}/CompiledContent/Content.mgcb && /Applications/Pipeline.app/Contents/MacOS/Pipeline",
"problemMatcher": "$msCompile"
},
] ]
} }

View File

@ -1,6 +1,4 @@
using System;
using Nez; using Nez;
using Microsoft.Xna.Framework;
namespace project_name namespace project_name
{ {

View File

@ -37,26 +37,25 @@
<Import Project="$(MSBuildExtensionsPath)\MonoGame\v3.0\MonoGame.Content.Builder.targets" /> <Import Project="$(MSBuildExtensionsPath)\MonoGame\v3.0\MonoGame.Content.Builder.targets" />
<!-- Copy fnalib directories to output --> <!-- Copy fnalib directories to output -->
<ItemGroup> <ItemGroup>
<Content Include="..\fnalibs\x86\**\*.*"> <Content Include="..\fnalibs\x86\**\*.*" Condition="'$(OS)' == 'Windows_NT' AND '$(Platform)' != 'x64'">
<Link>x86\%(RecursiveDir)%(Filename)%(Extension)</Link> <Link>x86\%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>
<Content Include="..\fnalibs\x64\**\*.*"> <Content Include="..\fnalibs\x64\**\*.*" Condition="'$(OS)' == 'Windows_NT' AND '$(Platform)' != 'x86'">
<Link>x64\%(RecursiveDir)%(Filename)%(Extension)</Link> <Link>x64\%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>
<Content Include="..\fnalibs\osx\**\*.*"> <Content Include="..\fnalibs\osx\**\*.*" Condition="'$(OS)' != 'Windows_NT'">
<Link>osx\%(RecursiveDir)%(Filename)%(Extension)</Link> <Link>osx\%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>
<Content Include="..\fnalibs\lib\**\*.*"> <Content Include="..\fnalibs\lib\**\*.*" Condition="'$(OS)' != 'Windows_NT'">
<Link>lib\%(RecursiveDir)%(Filename)%(Extension)</Link> <Link>lib\%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>
<Content Include="..\fnalibs\lib64\**\*.*"> <Content Include="..\fnalibs\lib64\**\*.*" Condition="'$(OS)' != 'Windows_NT'">
<Link>lib64\%(RecursiveDir)%(Filename)%(Extension)</Link> <Link>lib64\%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(RunConfiguration)' == 'Default' ">
<StartAction>Project</StartAction>
<ExternalConsole>false</ExternalConsole>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,24 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "project_name", "project_name.csproj", "{BD11109C-8FD1-4FFE-A3EF-8390A1EAE1A1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FNA", "../FNA/FNA.csproj", "{35253CE1-C864-4CD3-8249-4D1319748E8F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nez.FNA", "../Nez.FNA/Nez.FNA/Nez.FNA.csproj", "{11A5855C-B12C-4F8D-B935-56F3D0B671C3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nez.PipelineImporter", "../Nez.FNA/Nez/Nez.PipelineImporter/Nez.PipelineImporter.csproj", "{63E831F4-B847-4150-B5AF-CBE059EE27B8}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{BD11109C-8FD1-4FFE-A3EF-8390A1EAE1A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BD11109C-8FD1-4FFE-A3EF-8390A1EAE1A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BD11109C-8FD1-4FFE-A3EF-8390A1EAE1A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BD11109C-8FD1-4FFE-A3EF-8390A1EAE1A1}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal