diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..8f21109
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,29 @@
+CONFIGURATION=Release
+
+# Function to determine the version from Git and generate a SemVer 2.0 compliant version.
+# Ensure you git tag with -a to annotate the tag with a message
+get_version = $(shell \
+ TAG=$$(git describe --tags) && \
+ echo $$TAG | sed 's/^v//'; \
+)
+
+build:
+ dotnet build ./src/OrasProject.Oras --configuration $(CONFIGURATION)
+
+test:
+ dotnet test ./tests/OrasProject.Oras.Tests --configuration $(CONFIGURATION)
+
+pack:
+ $(eval VERSION := $(call get_version))
+ echo $(VERSION)
+ @if [ -z "$(VERSION)" ]; then \
+ dotnet pack ./src/OrasProject.Oras --configuration $(CONFIGURATION) --no-build -o nupkgs; \
+ else \
+ dotnet pack ./src/OrasProject.Oras --configuration $(CONFIGURATION) --no-build -o nupkgs /p:PackageVersion=$(VERSION); \
+ fi
+
+clean:
+ dotnet clean ./src/OrasProject.Oras
+ dotnet clean ./tests/OrasProject.Oras.Tests
+
+.PHONY: build test pack publish clean
diff --git a/Oras.sln b/Oras.sln
index 8c70aed..549c1f2 100644
--- a/Oras.sln
+++ b/Oras.sln
@@ -3,9 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Oras.Tests", "Oras.Tests\Oras.Tests.csproj", "{70DFCE13-53AA-4CC2-8E1A-F73A1344A0CB}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Oras.Tests", "tests\OrasProject.Oras.Tests\Oras.Tests.csproj", "{70DFCE13-53AA-4CC2-8E1A-F73A1344A0CB}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Oras", "Oras\Oras.csproj", "{547F152F-6F4D-4E5A-AD3A-C3BC5CDCFD27}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OrasProject.Oras", "src\OrasProject.Oras\OrasProject.Oras.csproj", "{547F152F-6F4D-4E5A-AD3A-C3BC5CDCFD27}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/Oras/Oras.csproj b/Oras/Oras.csproj
deleted file mode 100644
index e1639fc..0000000
--- a/Oras/Oras.csproj
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
- netstandard2.1
-
-
-
- <_Parameter1>Oras.Tests
-
-
-
-
-
-
-
diff --git a/Oras/Constants/DockerMediaTypes.cs b/src/OrasProject.Oras/Constants/DockerMediaTypes.cs
similarity index 100%
rename from Oras/Constants/DockerMediaTypes.cs
rename to src/OrasProject.Oras/Constants/DockerMediaTypes.cs
diff --git a/Oras/Constants/OCIMediaTypes .cs b/src/OrasProject.Oras/Constants/OCIMediaTypes .cs
similarity index 100%
rename from Oras/Constants/OCIMediaTypes .cs
rename to src/OrasProject.Oras/Constants/OCIMediaTypes .cs
diff --git a/Oras/Content/Content.cs b/src/OrasProject.Oras/Content/Content.cs
similarity index 100%
rename from Oras/Content/Content.cs
rename to src/OrasProject.Oras/Content/Content.cs
diff --git a/Oras/Content/DigestUtility.cs b/src/OrasProject.Oras/Content/DigestUtility.cs
similarity index 100%
rename from Oras/Content/DigestUtility.cs
rename to src/OrasProject.Oras/Content/DigestUtility.cs
diff --git a/Oras/Copy.cs b/src/OrasProject.Oras/Copy.cs
similarity index 100%
rename from Oras/Copy.cs
rename to src/OrasProject.Oras/Copy.cs
diff --git a/Oras/Exceptions/AlreadyExistsException.cs b/src/OrasProject.Oras/Exceptions/AlreadyExistsException.cs
similarity index 100%
rename from Oras/Exceptions/AlreadyExistsException.cs
rename to src/OrasProject.Oras/Exceptions/AlreadyExistsException.cs
diff --git a/Oras/Exceptions/InvalidDescriptorSizeException.cs b/src/OrasProject.Oras/Exceptions/InvalidDescriptorSizeException.cs
similarity index 100%
rename from Oras/Exceptions/InvalidDescriptorSizeException.cs
rename to src/OrasProject.Oras/Exceptions/InvalidDescriptorSizeException.cs
diff --git a/Oras/Exceptions/InvalidDigestException.cs b/src/OrasProject.Oras/Exceptions/InvalidDigestException.cs
similarity index 100%
rename from Oras/Exceptions/InvalidDigestException.cs
rename to src/OrasProject.Oras/Exceptions/InvalidDigestException.cs
diff --git a/Oras/Exceptions/InvalidReferenceException.cs b/src/OrasProject.Oras/Exceptions/InvalidReferenceException.cs
similarity index 100%
rename from Oras/Exceptions/InvalidReferenceException.cs
rename to src/OrasProject.Oras/Exceptions/InvalidReferenceException.cs
diff --git a/Oras/Exceptions/MismatchedDigestException.cs b/src/OrasProject.Oras/Exceptions/MismatchedDigestException.cs
similarity index 100%
rename from Oras/Exceptions/MismatchedDigestException.cs
rename to src/OrasProject.Oras/Exceptions/MismatchedDigestException.cs
diff --git a/Oras/Exceptions/MissingReferenceException.cs b/src/OrasProject.Oras/Exceptions/MissingReferenceException.cs
similarity index 100%
rename from Oras/Exceptions/MissingReferenceException.cs
rename to src/OrasProject.Oras/Exceptions/MissingReferenceException.cs
diff --git a/Oras/Exceptions/NotFoundException.cs b/src/OrasProject.Oras/Exceptions/NotFoundException.cs
similarity index 100%
rename from Oras/Exceptions/NotFoundException.cs
rename to src/OrasProject.Oras/Exceptions/NotFoundException.cs
diff --git a/Oras/Exceptions/SizeExceedsLimitException.cs b/src/OrasProject.Oras/Exceptions/SizeExceedsLimitException.cs
similarity index 100%
rename from Oras/Exceptions/SizeExceedsLimitException.cs
rename to src/OrasProject.Oras/Exceptions/SizeExceedsLimitException.cs
diff --git a/Oras/Exceptions/UnsupportedException.cs b/src/OrasProject.Oras/Exceptions/UnsupportedException.cs
similarity index 100%
rename from Oras/Exceptions/UnsupportedException.cs
rename to src/OrasProject.Oras/Exceptions/UnsupportedException.cs
diff --git a/Oras/Exceptions/UnsupportedVersionException.cs b/src/OrasProject.Oras/Exceptions/UnsupportedVersionException.cs
similarity index 100%
rename from Oras/Exceptions/UnsupportedVersionException.cs
rename to src/OrasProject.Oras/Exceptions/UnsupportedVersionException.cs
diff --git a/Oras/Interfaces/IDeleter.cs b/src/OrasProject.Oras/Interfaces/IDeleter.cs
similarity index 100%
rename from Oras/Interfaces/IDeleter.cs
rename to src/OrasProject.Oras/Interfaces/IDeleter.cs
diff --git a/Oras/Interfaces/IFetcher.cs b/src/OrasProject.Oras/Interfaces/IFetcher.cs
similarity index 100%
rename from Oras/Interfaces/IFetcher.cs
rename to src/OrasProject.Oras/Interfaces/IFetcher.cs
diff --git a/Oras/Interfaces/IReadOnlyStorage.cs b/src/OrasProject.Oras/Interfaces/IReadOnlyStorage.cs
similarity index 100%
rename from Oras/Interfaces/IReadOnlyStorage.cs
rename to src/OrasProject.Oras/Interfaces/IReadOnlyStorage.cs
diff --git a/Oras/Interfaces/IReadOnlyTarget.cs b/src/OrasProject.Oras/Interfaces/IReadOnlyTarget.cs
similarity index 100%
rename from Oras/Interfaces/IReadOnlyTarget.cs
rename to src/OrasProject.Oras/Interfaces/IReadOnlyTarget.cs
diff --git a/Oras/Interfaces/IResolver.cs b/src/OrasProject.Oras/Interfaces/IResolver.cs
similarity index 100%
rename from Oras/Interfaces/IResolver.cs
rename to src/OrasProject.Oras/Interfaces/IResolver.cs
diff --git a/Oras/Interfaces/IStorage.cs b/src/OrasProject.Oras/Interfaces/IStorage.cs
similarity index 100%
rename from Oras/Interfaces/IStorage.cs
rename to src/OrasProject.Oras/Interfaces/IStorage.cs
diff --git a/Oras/Interfaces/ITagResolver.cs b/src/OrasProject.Oras/Interfaces/ITagResolver.cs
similarity index 100%
rename from Oras/Interfaces/ITagResolver.cs
rename to src/OrasProject.Oras/Interfaces/ITagResolver.cs
diff --git a/Oras/Interfaces/ITagger.cs b/src/OrasProject.Oras/Interfaces/ITagger.cs
similarity index 100%
rename from Oras/Interfaces/ITagger.cs
rename to src/OrasProject.Oras/Interfaces/ITagger.cs
diff --git a/Oras/Interfaces/ITarget.cs b/src/OrasProject.Oras/Interfaces/ITarget.cs
similarity index 100%
rename from Oras/Interfaces/ITarget.cs
rename to src/OrasProject.Oras/Interfaces/ITarget.cs
diff --git a/Oras/Interfaces/Registry/IBlobStore.cs b/src/OrasProject.Oras/Interfaces/Registry/IBlobStore.cs
similarity index 100%
rename from Oras/Interfaces/Registry/IBlobStore.cs
rename to src/OrasProject.Oras/Interfaces/Registry/IBlobStore.cs
diff --git a/Oras/Interfaces/Registry/IManifestStore.cs b/src/OrasProject.Oras/Interfaces/Registry/IManifestStore.cs
similarity index 100%
rename from Oras/Interfaces/Registry/IManifestStore.cs
rename to src/OrasProject.Oras/Interfaces/Registry/IManifestStore.cs
diff --git a/Oras/Interfaces/Registry/IReferenceFetcher.cs b/src/OrasProject.Oras/Interfaces/Registry/IReferenceFetcher.cs
similarity index 100%
rename from Oras/Interfaces/Registry/IReferenceFetcher.cs
rename to src/OrasProject.Oras/Interfaces/Registry/IReferenceFetcher.cs
diff --git a/Oras/Interfaces/Registry/IReferencePusher.cs b/src/OrasProject.Oras/Interfaces/Registry/IReferencePusher.cs
similarity index 100%
rename from Oras/Interfaces/Registry/IReferencePusher.cs
rename to src/OrasProject.Oras/Interfaces/Registry/IReferencePusher.cs
diff --git a/Oras/Interfaces/Registry/IRegistry.cs b/src/OrasProject.Oras/Interfaces/Registry/IRegistry.cs
similarity index 100%
rename from Oras/Interfaces/Registry/IRegistry.cs
rename to src/OrasProject.Oras/Interfaces/Registry/IRegistry.cs
diff --git a/Oras/Interfaces/Registry/IRepository.cs b/src/OrasProject.Oras/Interfaces/Registry/IRepository.cs
similarity index 100%
rename from Oras/Interfaces/Registry/IRepository.cs
rename to src/OrasProject.Oras/Interfaces/Registry/IRepository.cs
diff --git a/Oras/Interfaces/Registry/IRepositoryOption.cs b/src/OrasProject.Oras/Interfaces/Registry/IRepositoryOption.cs
similarity index 100%
rename from Oras/Interfaces/Registry/IRepositoryOption.cs
rename to src/OrasProject.Oras/Interfaces/Registry/IRepositoryOption.cs
diff --git a/Oras/Interfaces/Registry/ITagLister.cs b/src/OrasProject.Oras/Interfaces/Registry/ITagLister.cs
similarity index 100%
rename from Oras/Interfaces/Registry/ITagLister.cs
rename to src/OrasProject.Oras/Interfaces/Registry/ITagLister.cs
diff --git a/Oras/Memory/MemoryGraph.cs b/src/OrasProject.Oras/Memory/MemoryGraph.cs
similarity index 100%
rename from Oras/Memory/MemoryGraph.cs
rename to src/OrasProject.Oras/Memory/MemoryGraph.cs
diff --git a/Oras/Memory/MemoryStorage.cs b/src/OrasProject.Oras/Memory/MemoryStorage.cs
similarity index 100%
rename from Oras/Memory/MemoryStorage.cs
rename to src/OrasProject.Oras/Memory/MemoryStorage.cs
diff --git a/Oras/Memory/MemoryTagResolver.cs b/src/OrasProject.Oras/Memory/MemoryTagResolver.cs
similarity index 100%
rename from Oras/Memory/MemoryTagResolver.cs
rename to src/OrasProject.Oras/Memory/MemoryTagResolver.cs
diff --git a/Oras/Memory/MemoryTarget.cs b/src/OrasProject.Oras/Memory/MemoryTarget.cs
similarity index 100%
rename from Oras/Memory/MemoryTarget.cs
rename to src/OrasProject.Oras/Memory/MemoryTarget.cs
diff --git a/Oras/Models/Descriptor.cs b/src/OrasProject.Oras/Models/Descriptor.cs
similarity index 100%
rename from Oras/Models/Descriptor.cs
rename to src/OrasProject.Oras/Models/Descriptor.cs
diff --git a/Oras/Models/Index.cs b/src/OrasProject.Oras/Models/Index.cs
similarity index 100%
rename from Oras/Models/Index.cs
rename to src/OrasProject.Oras/Models/Index.cs
diff --git a/Oras/Models/Manifest.cs b/src/OrasProject.Oras/Models/Manifest.cs
similarity index 100%
rename from Oras/Models/Manifest.cs
rename to src/OrasProject.Oras/Models/Manifest.cs
diff --git a/Oras/Models/MinimumDescriptor.cs b/src/OrasProject.Oras/Models/MinimumDescriptor.cs
similarity index 100%
rename from Oras/Models/MinimumDescriptor.cs
rename to src/OrasProject.Oras/Models/MinimumDescriptor.cs
diff --git a/src/OrasProject.Oras/OrasProject.Oras.csproj b/src/OrasProject.Oras/OrasProject.Oras.csproj
new file mode 100644
index 0000000..ae749e8
--- /dev/null
+++ b/src/OrasProject.Oras/OrasProject.Oras.csproj
@@ -0,0 +1,25 @@
+
+
+ netstandard2.1
+ OrasProject.Oras
+ 0.0.0-dev
+ https://github.com/oras-project/oras-dotnet
+ https://oras.land
+ Oras package provides API to work with OCI
+ OCI, ORAS, Registry, Container, Image, Artifacts
+ true
+ README.md
+
+
+
+ <_Parameter1>Oras.Tests
+
+
+
+
+
+
+
+
+
+
diff --git a/src/OrasProject.Oras/README.md b/src/OrasProject.Oras/README.md
new file mode 100644
index 0000000..1d2f09b
--- /dev/null
+++ b/src/OrasProject.Oras/README.md
@@ -0,0 +1,4 @@
+# About
+
+Provides an implementation for working with [Open Container](https://opencontainers.org/)
+images and artifacts .
diff --git a/Oras/Remote/Auth/HttpClientWithBasicAuth.cs b/src/OrasProject.Oras/Remote/Auth/HttpClientWithBasicAuth.cs
similarity index 100%
rename from Oras/Remote/Auth/HttpClientWithBasicAuth.cs
rename to src/OrasProject.Oras/Remote/Auth/HttpClientWithBasicAuth.cs
diff --git a/Oras/Remote/ErrorUtility.cs b/src/OrasProject.Oras/Remote/ErrorUtility.cs
similarity index 100%
rename from Oras/Remote/ErrorUtility.cs
rename to src/OrasProject.Oras/Remote/ErrorUtility.cs
diff --git a/Oras/Remote/HttpClientExtensions.cs b/src/OrasProject.Oras/Remote/HttpClientExtensions.cs
similarity index 100%
rename from Oras/Remote/HttpClientExtensions.cs
rename to src/OrasProject.Oras/Remote/HttpClientExtensions.cs
diff --git a/Oras/Remote/LinkUtility.cs b/src/OrasProject.Oras/Remote/LinkUtility.cs
similarity index 100%
rename from Oras/Remote/LinkUtility.cs
rename to src/OrasProject.Oras/Remote/LinkUtility.cs
diff --git a/Oras/Remote/ManifestUtility.cs b/src/OrasProject.Oras/Remote/ManifestUtility.cs
similarity index 100%
rename from Oras/Remote/ManifestUtility.cs
rename to src/OrasProject.Oras/Remote/ManifestUtility.cs
diff --git a/Oras/Remote/Registry.cs b/src/OrasProject.Oras/Remote/Registry.cs
similarity index 100%
rename from Oras/Remote/Registry.cs
rename to src/OrasProject.Oras/Remote/Registry.cs
diff --git a/Oras/Remote/RemoteReference.cs b/src/OrasProject.Oras/Remote/RemoteReference.cs
similarity index 100%
rename from Oras/Remote/RemoteReference.cs
rename to src/OrasProject.Oras/Remote/RemoteReference.cs
diff --git a/Oras/Remote/Repository.cs b/src/OrasProject.Oras/Remote/Repository.cs
similarity index 100%
rename from Oras/Remote/Repository.cs
rename to src/OrasProject.Oras/Remote/Repository.cs
diff --git a/Oras/Remote/ResponseTypes.cs b/src/OrasProject.Oras/Remote/ResponseTypes.cs
similarity index 100%
rename from Oras/Remote/ResponseTypes.cs
rename to src/OrasProject.Oras/Remote/ResponseTypes.cs
diff --git a/Oras/Remote/URLUtiliity.cs b/src/OrasProject.Oras/Remote/URLUtiliity.cs
similarity index 100%
rename from Oras/Remote/URLUtiliity.cs
rename to src/OrasProject.Oras/Remote/URLUtiliity.cs
diff --git a/Oras.Tests/ContentTest/ContentTest.cs b/tests/OrasProject.Oras.Tests/ContentTest/ContentTest.cs
similarity index 100%
rename from Oras.Tests/ContentTest/ContentTest.cs
rename to tests/OrasProject.Oras.Tests/ContentTest/ContentTest.cs
diff --git a/Oras.Tests/CopyTest.cs b/tests/OrasProject.Oras.Tests/CopyTest.cs
similarity index 100%
rename from Oras.Tests/CopyTest.cs
rename to tests/OrasProject.Oras.Tests/CopyTest.cs
diff --git a/Oras.Tests/MemoryTest/MemoryTargetTest.cs b/tests/OrasProject.Oras.Tests/MemoryTest/MemoryTargetTest.cs
similarity index 100%
rename from Oras.Tests/MemoryTest/MemoryTargetTest.cs
rename to tests/OrasProject.Oras.Tests/MemoryTest/MemoryTargetTest.cs
diff --git a/Oras.Tests/Oras.Tests.csproj b/tests/OrasProject.Oras.Tests/Oras.Tests.csproj
similarity index 92%
rename from Oras.Tests/Oras.Tests.csproj
rename to tests/OrasProject.Oras.Tests/Oras.Tests.csproj
index f15a874..afe33d9 100644
--- a/Oras.Tests/Oras.Tests.csproj
+++ b/tests/OrasProject.Oras.Tests/Oras.Tests.csproj
@@ -23,7 +23,7 @@
-
+
diff --git a/Oras.Tests/RemoteTest/AuthTest.cs b/tests/OrasProject.Oras.Tests/RemoteTest/AuthTest.cs
similarity index 100%
rename from Oras.Tests/RemoteTest/AuthTest.cs
rename to tests/OrasProject.Oras.Tests/RemoteTest/AuthTest.cs
diff --git a/Oras.Tests/RemoteTest/RegistryTest.cs b/tests/OrasProject.Oras.Tests/RemoteTest/RegistryTest.cs
similarity index 100%
rename from Oras.Tests/RemoteTest/RegistryTest.cs
rename to tests/OrasProject.Oras.Tests/RemoteTest/RegistryTest.cs
diff --git a/Oras.Tests/RemoteTest/RepositoryTest.cs b/tests/OrasProject.Oras.Tests/RemoteTest/RepositoryTest.cs
similarity index 100%
rename from Oras.Tests/RemoteTest/RepositoryTest.cs
rename to tests/OrasProject.Oras.Tests/RemoteTest/RepositoryTest.cs