diff --git a/.github/workflows/nuget.build.yml b/.github/workflows/nuget.build.yml
new file mode 100644
index 00000000..d4f1ca57
--- /dev/null
+++ b/.github/workflows/nuget.build.yml
@@ -0,0 +1,33 @@
+name: nuget.build
+
+on: [push, pull_request]
+
+jobs:
+ build:
+ runs-on: windows-latest
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Create Build Environment
+ run: cmake -E make_directory ${{runner.workspace}}/build
+
+ - name:
+ run: |
+ cmake -A x64 -DCMAKE_CXX_STANDARD=17
+
+ - name: Build
+ run: |
+ $threads = (Get-CimInstance Win32_ComputerSystem).NumberOfLogicalProcessors
+ cmake --build . --config Release --parallel $threads
+ cmake --build . --config Debug --parallel $threads
+
+ - name: Test
+ working-directory: ${{runner.workspace}}/build
+ run: ctest -C Debug -V
+ env:
+ CTEST_OUTPUT_ON_FAILURE: True
+
+ - name: Pack
+ run: |
+ nuget pack -version 1.0.0 wuganhao.fmtlib.nuspec -outputdirectory dist
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 8a37cb98..16fb8b97 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,3 +35,10 @@ FMT.build
Makefile
run-msbuild.bat
fmt.pc
+/Debug/
+/fmt.dir/
+/x64/
+*.vcxproj.filters
+*.vcxproj
+*.sln
+/Release/
diff --git a/doc/.gitignore b/doc/.gitignore
new file mode 100644
index 00000000..c014c583
--- /dev/null
+++ b/doc/.gitignore
@@ -0,0 +1,6 @@
+/INSTALL.vcxproj
+/INSTALL.vcxproj.filters
+/PACKAGE.vcxproj
+/PACKAGE.vcxproj.filters
+/RUN_TESTS.vcxproj
+/RUN_TESTS.vcxproj.filters
diff --git a/test/.gitignore b/test/.gitignore
new file mode 100644
index 00000000..33397b1f
--- /dev/null
+++ b/test/.gitignore
@@ -0,0 +1,29 @@
+/assert-test.dir/
+/chrono-test.dir/
+/format-impl-test.dir/
+/color-test.dir/
+/compile-test.dir/
+/core-test.dir/
+/custom-formatter-test.dir/
+/Debug/
+/format-test.dir/
+/gmock.dir/
+/locale-test.dir/
+/gtest-extra-test.dir/
+/grisu-test.dir/
+/test-main.dir/
+/header-only-test.dir/
+/os-test.dir/
+/ostream-test.dir/
+/posix-mock-test.dir/
+/printf-test.dir/
+/ranges-test.dir/
+/scan-test.dir/
+*.vcxproj.filters
+*.vcxproj
+/args-test.dir/
+/compile-fp-test.dir/
+/enforce-checks-test.dir/
+/Release/
+/unicode-test.dir/
+/xchar-test.dir/
diff --git a/test/gtest/.gitignore b/test/gtest/.gitignore
new file mode 100644
index 00000000..b079302d
--- /dev/null
+++ b/test/gtest/.gitignore
@@ -0,0 +1,3 @@
+/Debug/
+/Release/
+/gtest.dir/
diff --git a/wuganhao.fmtlib.nuspec b/wuganhao.fmtlib.nuspec
new file mode 100644
index 00000000..acd33704
--- /dev/null
+++ b/wuganhao.fmtlib.nuspec
@@ -0,0 +1,23 @@
+
+
+
+ wuganhao.fmtlib
+ $version$
+ {fmt} lib nuget package
+ Wu, Ganhao<wuganhao@hotmail.com>
+ Wu, Ganhao<wuganhao@hotmail.com>
+ false
+ fmtlib
+ fmt lib
+ fmtlib std::format
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wuganhao.fmtlib.targets b/wuganhao.fmtlib.targets
new file mode 100644
index 00000000..acc864aa
--- /dev/null
+++ b/wuganhao.fmtlib.targets
@@ -0,0 +1,32 @@
+
+
+
+
+ $(MSBuildThisFileDirectory)..\include\;%(AdditionalIncludeDirectories)
+
+
+
+
+ fmtd.lib;%(AdditionalDependencies)
+
+
+ fmtd.lib;%(AdditionalDependencies)
+
+
+
+
+ fmt.lib;%(AdditionalDependencies)
+
+
+ fmt.lib;%(AdditionalDependencies)
+
+
+
+
+ $(MSBuildThisFileDirectory)..\lib\native\lib\x64;%(AdditionalLibraryDirectories)
+
+
+ $(MSBuildThisFileDirectory)..\lib\native\lib\x64;%(AdditionalLibraryDirectories)
+
+
+
\ No newline at end of file