[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[win-pv-devel] [PATCH] Add PowerShell build scripts, version.vcxproj


  • To: <win-pv-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Owen Smith <owen.smith@xxxxxxxxxx>
  • Date: Mon, 3 Jun 2019 16:45:33 +0100
  • Authentication-results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=owen.smith@xxxxxxxxxx; spf=Pass smtp.mailfrom=owen.smith@xxxxxxxxxx; spf=None smtp.helo=postmaster@xxxxxxxxxxxxxxxxxxxxxxxxxx
  • Cc: Owen Smith <owen.smith@xxxxxxxxxx>
  • Delivery-date: Mon, 03 Jun 2019 15:46:04 +0000
  • Ironport-sdr: aRNhtUfpnaDHs0wyXHulN575j3DqZSTxJo5FwbvnWKXrNoj4yRqMwSTVc+Ray8HzuO5xiQLM/V rW3MRf0qeoauIb9aNoNer64Gpkgvytq6A3Xi5fd+5tzpfIpoWOZOhlMrSKU8pw9R4Yr5mm/PPd gk7UvGPLYBCM4zPKLZMYm8nJUNKTKB8VVYecki8N8Lv3wKQV/FJWNaZq8Sr1YQz9Lg+gnCHniS p6hR6aX+8wzg2IatJvD0BfaxxfMWNvhAGE+RehOhSE1qwZqLeRguJs3OcvU14Dd7EJ8tNAqQb0 YDQ=
  • List-id: Developer list for the Windows PV Drivers subproject <win-pv-devel.lists.xenproject.org>

Based on the sequence of commits to xenbus, add powershell scripts to
build the solution using the EWDK
version.vcxproj generates versioned files (version.h, xeniface.inf and
wmi.mof) using scripts/genfiles.ps1
Strips duplicated functionality from build.py toproduce consistant
builds between python and powershell.

Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
---
 build.ps1                                      |  90 +++++++++++++++++
 build.py                                       | 131 +------------------------
 include/version.tmpl                           |  25 +++++
 msbuild.ps1                                    |  92 +++++++++++++++++
 scripts/genfiles.ps1                           |  97 ++++++++++++++++++
 src/xeniface.inf                               |  26 ++---
 symstore.ps1                                   |  36 +++++++
 vs2015/package/package.vcxproj                 |  16 +++
 vs2015/version/version.vcxproj                 |  19 ++++
 vs2015/xenagent/xenagent.vcxproj               |   1 -
 vs2015/xeniface.sln                            |  31 ++++++
 vs2015/xeniface/xeniface.vcxproj               |  16 ---
 vs2015/xeniface_coinst/xeniface_coinst.vcxproj |   1 -
 vs2017/package/package.vcxproj                 |  16 +++
 vs2017/version/version.vcxproj                 |  16 +++
 vs2017/xenagent/xenagent.vcxproj               |   1 -
 vs2017/xeniface.sln                            |  31 ++++++
 vs2017/xeniface/xeniface.vcxproj               |  16 ---
 vs2017/xeniface_coinst/xeniface_coinst.vcxproj |   1 -
 19 files changed, 485 insertions(+), 177 deletions(-)
 create mode 100644 build.ps1
 create mode 100644 include/version.tmpl
 create mode 100644 msbuild.ps1
 create mode 100644 scripts/genfiles.ps1
 create mode 100644 symstore.ps1
 create mode 100644 vs2015/version/version.vcxproj
 create mode 100644 vs2017/version/version.vcxproj

diff --git a/build.ps1 b/build.ps1
new file mode 100644
index 0000000..326715d
--- /dev/null
+++ b/build.ps1
@@ -0,0 +1,90 @@
+#
+# Main build script
+#
+
+param(
+       [Parameter(Mandatory = $true)]
+       [string]$Type,
+       [switch]$Sdv
+)
+
+#
+# Script Body
+#
+
+Function Build {
+       param(
+               [string]$Arch,
+               [string]$Type
+       )
+
+       $visualstudioversion = $Env:VisualStudioVersion
+       $solutiondir = @{ "14.0" = "vs2015"; "15.0" = "vs2017"; }
+       $configurationbase = @{ "14.0" = "Windows 8"; "15.0" = "Windows 8"; }
+
+       $params = @{
+               SolutionDir = $solutiondir[$visualstudioversion];
+               ConfigurationBase = $configurationbase[$visualstudioversion];
+               Arch = $Arch;
+               Type = $Type
+               }
+       & ".\msbuild.ps1" @params
+}
+
+Function SdvBuild {
+       $visualstudioversion = $Env:VisualStudioVersion
+       $solutiondir = @{ "14.0" = "vs2015"; "15.0" = "vs2017"; }
+       $configurationbase = @{ "14.0" = "Windows 10"; "15.0" = "Windows 10"; }
+       $arch = "x64"
+
+       $params = @{
+               SolutionDir = $solutiondir[$visualstudioversion];
+               ConfigurationBase = $configurationbase[$visualstudioversion];
+               Arch = $arch;
+               Type = "sdv"
+               }
+       & ".\msbuild.ps1" @params
+}
+
+if ($Type -ne "free" -and $Type -ne "checked") {
+       Write-Host "Invalid Type"
+       Exit -1
+}
+
+if ([string]::IsNullOrEmpty($Env:VENDOR_NAME)) {
+       Set-Item -Path Env:VENDOR_NAME -Value 'Xen Project'
+}
+
+if ([string]::IsNullOrEmpty($Env:VENDOR_PREFIX)) {
+       Set-Item -Path Env:VENDOR_PREFIX -Value 'XP'
+}
+
+if ([string]::IsNullOrEmpty($Env:PRODUCT_NAME)) {
+       Set-Item -Path Env:PRODUCT_NAME -Value 'Xen'
+}
+
+if ([string]::IsNullOrEmpty($Env:OBJECT_PREFIX)) {
+       Set-Item -Path Env:OBJECT_PREFIX -Value 'XenProject'
+}
+
+if ([string]::IsNullOrEmpty($Env:BUILD_NUMBER)) {
+       if (Test-Path ".build_number") {
+               $BuildNum = Get-Content -Path ".build_number"
+               Set-Content -Path ".build_number" -Value ([int]$BuildNum + 1)
+       } else {
+               $BuildNum = '0'
+               Set-Content -Path ".build_number" -Value '1'
+       }
+       Set-Item -Path Env:BUILD_NUMBER -Value $BuildNum
+}
+
+Set-Item -Path Env:MAJOR_VERSION -Value '9'
+Set-Item -Path Env:MINOR_VERSION -Value '0'
+Set-Item -Path Env:MICRO_VERSION -Value '0'
+
+Build "x86" $Type
+Build "x64" $Type
+
+if ($Sdv) {
+       SdvBuild
+}
diff --git a/build.py b/build.py
index 20a3ff4..95284c7 100755
--- a/build.py
+++ b/build.py
@@ -24,91 +24,6 @@ def next_build_number():
     return build_number
 
 
-def make_header():
-    now = datetime.datetime.now()
-
-    file = open('include\\version.h', 'w')
-
-    file.write('#define VENDOR_NAME_STR\t\t"' + os.environ['VENDOR_NAME'] + 
'"\n')
-    file.write('#define VENDOR_PREFIX_STR\t"' + os.environ['VENDOR_PREFIX'] + 
'"\n')
-
-    if 'VENDOR_DEVICE_ID' in os.environ.keys():
-        file.write('#define VENDOR_DEVICE_ID_STR\t"' + 
os.environ['VENDOR_DEVICE_ID'] + '"\n')
-
-    file.write('#define PRODUCT_NAME_STR\t"' + os.environ['PRODUCT_NAME'] + 
'"\n')
-    file.write('\n')
-
-    file.write('#define OBJECT_PREFIX_STR\t"' + os.environ['OBJECT_PREFIX'] + 
'"\n')
-    file.write('#define OBJECT_GUID(_Name)\t' + os.environ['OBJECT_PREFIX'] + 
' ## _Name ## _GUID\n')
-    file.write('\n')
-
-    file.write('#define MAJOR_VERSION\t\t' + os.environ['MAJOR_VERSION'] + 
'\n')
-    file.write('#define MAJOR_VERSION_STR\t"' + os.environ['MAJOR_VERSION'] + 
'"\n')
-    file.write('\n')
-
-    file.write('#define MINOR_VERSION\t\t' + os.environ['MINOR_VERSION'] + 
'\n')
-    file.write('#define MINOR_VERSION_STR\t"' + os.environ['MINOR_VERSION'] + 
'"\n')
-    file.write('\n')
-
-    file.write('#define MICRO_VERSION\t\t' + os.environ['MICRO_VERSION'] + 
'\n')
-    file.write('#define MICRO_VERSION_STR\t"' + os.environ['MICRO_VERSION'] + 
'"\n')
-    file.write('\n')
-
-    file.write('#define BUILD_NUMBER\t\t' + os.environ['BUILD_NUMBER'] + '\n')
-    file.write('#define BUILD_NUMBER_STR\t"' + os.environ['BUILD_NUMBER'] + 
'"\n')
-    file.write('\n')
-
-    file.write('#define YEAR\t\t\t' + str(now.year) + '\n')
-    file.write('#define YEAR_STR\t\t"' + str(now.year) + '"\n')
-    file.write('\n')
-
-    file.write('#define MONTH\t\t\t' + str(now.month) + '\n')
-    file.write('#define MONTH_STR\t\t"' + str(now.month) + '"\n')
-    file.write('\n')
-
-    file.write('#define DAY\t\t\t' + str(now.day) + '\n')
-    file.write('#define DAY_STR\t\t\t"' + str(now.day) + '"\n')
-    file.write('\n')
-
-    file.close()
-
-
-def copy_inf(vs, name):
-    src = open('src\\%s.inf' % name, 'r')
-    dst = open('%s\\%s.inf' % (vs, name), 'w')
-
-    for line in src:
-        line = re.sub('@MAJOR_VERSION@', os.environ['MAJOR_VERSION'], line)
-        line = re.sub('@MINOR_VERSION@', os.environ['MINOR_VERSION'], line)
-        line = re.sub('@MICRO_VERSION@', os.environ['MICRO_VERSION'], line)
-        line = re.sub('@BUILD_NUMBER@', os.environ['BUILD_NUMBER'], line)
-        line = re.sub('@VENDOR_NAME@', os.environ['VENDOR_NAME'], line)
-        line = re.sub('@VENDOR_PREFIX@', os.environ['VENDOR_PREFIX'], line)
-        line = re.sub('@PRODUCT_NAME@', os.environ['PRODUCT_NAME'], line)
-
-        if re.search('@VENDOR_DEVICE_ID@', line):
-            if 'VENDOR_DEVICE_ID' not in os.environ.keys():
-                continue
-            line = re.sub('@VENDOR_DEVICE_ID@', 
os.environ['VENDOR_DEVICE_ID'], line)
-
-        dst.write(line)
-
-    dst.close()
-    src.close()
-
-
-def copy_mof(name):
-    src = open('src\\%s.mof' % name, 'r')
-    dst = open('src\\%s\\wmi.mof' % name, 'w')
-
-    for line in src:
-        line = re.sub('@OBJECT_PREFIX@', os.environ['OBJECT_PREFIX'], line)
-        dst.write(line)
-
-    dst.close()
-    src.close()
-
-
 def get_expired_symbols(name, age = 30):
     path = os.path.join(os.environ['SYMBOL_SERVER'], '000Admin\\history.txt')
 
@@ -229,29 +144,6 @@ def build_sln(name, release, arch, debug, vs):
 
     msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
 
-def copy_package(name, release, arch, debug, vs):
-    configuration = get_configuration(release, debug)
-
-    if arch == 'x86':
-        platform = 'Win32'
-    elif arch == 'x64':
-        platform = 'x64'
-
-    pattern = '/'.join([vs, ''.join(configuration.split(' ')), platform, 
'package', '*'])
-    print('Copying package from %s' % pattern)
-
-    files = glob.glob(pattern)
-
-    dst = os.path.join(name, arch)
-
-    os.makedirs(dst, exist_ok=True)
-
-    for file in files:
-        new = shutil.copy(file, dst)
-        print(new)
-
-    print('')
-
 def remove_timestamps(path):
     try:
         os.unlink(path + '.orig')
@@ -368,6 +260,7 @@ def manifest():
 
 
 def archive(filename, files, tgz=False):
+    print(filename)
     access='w'
     if tgz:
         access='w:gz'
@@ -397,11 +290,13 @@ def getVsVersion():
 
     return mapping[vsenv['VisualStudioVersion']]
 
+
 def main():
     debug = { 'checked': True, 'free': False }
     sdv = { 'nosdv': False, None: True }
     driver = 'xeniface'
     vs = getVsVersion()
+    now = datetime.datetime.now()
 
     if 'VENDOR_NAME' not in os.environ.keys():
         os.environ['VENDOR_NAME'] = 'Xen Project'
@@ -427,24 +322,6 @@ def main():
         print(os.environ['GIT_REVISION'], file=revision)
         revision.close()
 
-    print("VENDOR_NAME\t\t'%s'" % os.environ['VENDOR_NAME'])
-    print("VENDOR_PREFIX\t\t'%s'" % os.environ['VENDOR_PREFIX'])
-
-    if 'VENDOR_DEVICE_ID' in os.environ.keys():
-        print("VENDOR_DEVICE_ID\t'%s'" % os.environ['VENDOR_DEVICE_ID'])
-
-    print("PRODUCT_NAME\t\t'%s'" % os.environ['PRODUCT_NAME'])
-    print("OBJECT_PREFIX\t\t'%s'" % os.environ['OBJECT_PREFIX'])
-    print("MAJOR_VERSION\t\t%s" % os.environ['MAJOR_VERSION'])
-    print("MINOR_VERSION\t\t%s" % os.environ['MINOR_VERSION'])
-    print("MICRO_VERSION\t\t%s" % os.environ['MICRO_VERSION'])
-    print("BUILD_NUMBER\t\t%s" % os.environ['BUILD_NUMBER'])
-    print()
-
-    make_header()
-    copy_inf(vs, driver)
-    copy_mof(driver)
-
     symstore_del(driver, 30)
 
     release = { 'vs2015':'Windows 8',
@@ -453,10 +330,8 @@ def main():
     shutil.rmtree(driver, ignore_errors=True)
 
     build_sln(driver, release[vs], 'x86', debug[sys.argv[1]], vs)
-    copy_package(driver, release[vs], 'x86', debug[sys.argv[1]], vs)
 
     build_sln(driver, release[vs], 'x64', debug[sys.argv[1]], vs)
-    copy_package(driver, release[vs], 'x64', debug[sys.argv[1]], vs)
 
     symstore_add(driver, release[vs], 'x86', debug[sys.argv[1]], vs)
     symstore_add(driver, release[vs], 'x64', debug[sys.argv[1]], vs)
diff --git a/include/version.tmpl b/include/version.tmpl
new file mode 100644
index 0000000..c675b9c
--- /dev/null
+++ b/include/version.tmpl
@@ -0,0 +1,25 @@
+#define VENDOR_NAME_STR      "@VENDOR_NAME@"
+#define PRODUCT_NAME_STR     "@PRODUCT_NAME@"
+#define VENDOR_PREFIX_STR    "@VENDOR_PREFIX@"
+#define VENDOR_DEVICE_ID_STR "@VENDOR_DEVICE_ID@"
+
+#define OBJECT_PREFIX_STR    "@OBJECT_PREFIX@"
+#define OBJECT_GUID(_Name)   @OBJECT_PREFIX@ ## _Name ## _GUID
+
+#define MAJOR_VERSION_STR    "@MAJOR_VERSION@"
+#define MINOR_VERSION_STR    "@MINOR_VERSION@"
+#define MICRO_VERSION_STR    "@MICRO_VERSION@"
+#define BUILD_NUMBER_STR     "@BUILD_NUMBER@"
+
+#define YEAR_STR             "@YEAR@"
+#define MONTH_STR            "@MONTH@"
+#define DAY_STR              "@DAY@"
+
+#define MAJOR_VERSION        @MAJOR_VERSION@
+#define MINOR_VERSION        @MINOR_VERSION@
+#define MICRO_VERSION        @MICRO_VERSION@
+#define BUILD_NUMBER         @BUILD_NUMBER@
+
+#define YEAR                 @YEAR@
+#define MONTH                @MONTH@
+#define DAY                  @DAY@
diff --git a/msbuild.ps1 b/msbuild.ps1
new file mode 100644
index 0000000..0a17673
--- /dev/null
+++ b/msbuild.ps1
@@ -0,0 +1,92 @@
+#
+# Wrapper script for MSBuild
+#
+param(
+       [string]$SolutionDir = "vs2017",
+       [string]$ConfigurationBase = "Windows 10",
+       [Parameter(Mandatory = $true)]
+       [string]$Arch,
+       [Parameter(Mandatory = $true)]
+       [string]$Type
+)
+
+Function Run-MSBuild {
+       param(
+               [string]$SolutionPath,
+               [string]$Name,
+               [string]$Configuration,
+               [string]$Platform,
+               [string]$Target = "Build",
+               [string]$Inputs = ""
+       )
+
+       $c = "msbuild.exe"
+       $c += " /m:4"
+       $c += [string]::Format(" /p:Configuration=""{0}""", $Configuration)
+       $c += [string]::Format(" /p:Platform=""{0}""", $Platform)
+       $c += [string]::Format(" /t:""{0}"" ", $Target)
+       if ($Inputs) {
+               $c += [string]::Format(" /p:Inputs=""{0}"" ", $Inputs)
+       }
+       $c += Join-Path -Path $SolutionPath -ChildPath $Name
+
+       Invoke-Expression $c
+}
+
+Function Run-MSBuildSDV {
+       param(
+               [string]$SolutionPath,
+               [string]$Name,
+               [string]$Configuration,
+               [string]$Platform
+       )
+
+       $basepath = Get-Location
+       $versionpath = Join-Path -Path $SolutionPath -ChildPath "version"
+       $projpath = Join-Path -Path $SolutionPath -ChildPath $Name
+       Set-Location $projpath
+
+       $project = [string]::Format("{0}.vcxproj", $Name)
+       Run-MSBuild $versionpath "version.vcxproj" $Configuration $Platform 
"Build"
+       Run-MSBuild $projpath $project $Configuration $Platform "Build"
+       Run-MSBuild $projpath $project $Configuration $Platform "sdv" "/clean"
+       Run-MSBuild $projpath $project $Configuration $Platform "sdv" 
"/check:default.sdv /debug"
+       Run-MSBuild $projpath $project $Configuration $Platform "dvl"
+
+       $refine = Join-Path -Path $projpath -ChildPath "refine.sdv"
+       if (Test-Path -Path $refine -PathType Leaf) {
+               Run-MSBuild $projpath $project $Configuration $Platform "sdv" 
"/refine"
+       }
+
+       Copy-Item "*DVL*" -Destination $SolutionPath
+
+       Set-Location $basepath
+}
+
+#
+# Script Body
+#
+
+$configuration = @{ "free" = "$ConfigurationBase Release"; "checked" = 
"$ConfigurationBase Debug"; "sdv" = "$ConfigurationBase Release"; }
+$platform = @{ "x86" = "Win32"; "x64" = "x64" }
+$solutionpath = Resolve-Path $SolutionDir
+
+Set-ExecutionPolicy -Scope CurrentUser -Force Bypass
+
+if ($Type -eq "free") {
+       Run-MSBuild $solutionpath "xeniface.sln" $configuration["free"] 
$platform[$Arch]
+}
+elseif ($Type -eq "checked") {
+       Run-MSBuild $solutionpath "xeniface.sln" $configuration["checked"] 
$platform[$Arch]
+}
+elseif ($Type -eq "sdv") {
+       $archivepath = "xeniface"
+
+       if (-Not (Test-Path -Path $archivepath)) {
+               New-Item -Name $archivepath -ItemType Directory | Out-Null
+       }
+
+       Run-MSBuildSDV $solutionpath "xeniface" $configuration["sdv"] 
$platform[$Arch]
+
+       Copy-Item -Path (Join-Path -Path $SolutionPath -ChildPath "*DVL*") 
-Destination $archivepath
+}
diff --git a/scripts/genfiles.ps1 b/scripts/genfiles.ps1
new file mode 100644
index 0000000..64e087c
--- /dev/null
+++ b/scripts/genfiles.ps1
@@ -0,0 +1,97 @@
+#
+# Generate version.h and xenbus.inf
+#
+param(
+       [string]$Platform = "Win32",
+       [string]$SolutionDir = "vs2017",
+       [string]$IncludeDir = "include",
+       [string]$SourceDir = "src"
+)
+
+# Copy $InFileName -> $OutFileName replacing $Token$_.Key$Token with $_.Value 
from
+# $Replacements
+Function Copy-FileWithReplacements {
+       param(
+               [Parameter(Mandatory = $true)]
+               [string]$InFileName,
+               [Parameter(Mandatory = $true)]
+               [string]$OutFileName,
+               [hashtable]$Replacements,
+               [string]$Token = "@"
+       )
+
+       Write-Host "Copy-FileWithReplacements"
+       Write-Host $InFileName" -> "$OutFileName
+
+       (Get-Content $InFileName) |
+       ForEach-Object {
+               $line = $_
+               $Replacements.GetEnumerator() | ForEach-Object {
+                       $key = [string]::Format("{0}{1}{2}", $Token, $_.Name, 
$Token)
+                       if (([string]::IsNullOrEmpty($_.Value)) -and 
($line.Contains($key))) {
+                               Write-Host "Skipping Line Containing " $_.Name
+                               $line = $null
+                       }
+                       $line = $line -replace $key, $_.Value
+               }
+               $line
+       } |
+       Set-Content $OutFileName
+}
+
+#
+# Script Body
+#
+$TheYear = [int](Get-Date -UFormat "%Y")
+$TheMonth = [int](Get-Date -UFormat "%m")
+$TheDay = [int](Get-Date -UFormat "%d")
+$InfArch = @{ "Win32" = "x86"; "x64" = "amd64" }
+$InfDate = Get-Date -UFormat "%m/%d/%Y"
+
+# if GitRevision is $null, GIT_REVISION will be excluded from the 
Copy-FileWithReplacements
+$GitRevision = & "git.exe" "rev-list" "--max-count=1" "HEAD"
+if ($GitRevision) {
+       Set-Content -Path ".revision" -Value $GitRevision
+}
+
+# [ordered] makes output easier to parse by humans
+$Replacements = [ordered]@{
+       # values determined from the build environment
+       'VENDOR_NAME' = $Env:VENDOR_NAME;
+       'PRODUCT_NAME' = $Env:PRODUCT_NAME;
+       'VENDOR_DEVICE_ID' = $Env:VENDOR_DEVICE_ID;
+       'VENDOR_PREFIX' = $Env:VENDOR_PREFIX;
+       'OBJECT_PREFIX' = $Env:OBJECT_PREFIX;
+
+       'MAJOR_VERSION' = $Env:MAJOR_VERSION;
+       'MINOR_VERSION' = $Env:MINOR_VERSION;
+       'MICRO_VERSION' = $Env:MICRO_VERSION;
+       'BUILD_NUMBER' = $Env:BUILD_NUMBER;
+
+       # generated values
+       'GIT_REVISION' = $GitRevision;
+
+       'INF_DATE' = $InfDate;
+       'INF_ARCH' = $InfArch[$Platform];
+       'YEAR' = $TheYear;
+       'MONTH' = $TheMonth;
+       'DAY' = $TheDay
+}
+
+$Replacements | Out-String | Write-Host
+
+$includepath = Resolve-Path $IncludeDir
+$src = Join-Path -Path $includepath -ChildPath "version.tmpl"
+$dst = Join-Path -Path $includepath -ChildPath "version.h"
+Copy-FileWithReplacements $src $dst -Replacements $Replacements
+
+$sourcepath = Resolve-Path $SourceDir
+$solutionpath = Resolve-Path $SolutionDir
+$src = Join-Path -Path $sourcepath -ChildPath "xeniface.inf"
+$dst = Join-Path -Path $solutionpath -ChildPath "xeniface.inf"
+Copy-FileWithReplacements $src $dst -Replacements $Replacements
+
+$sourcepath = Resolve-Path $SourceDir
+$src = Join-Path -Path $sourcepath -ChildPath "xeniface.mof"
+$dst = Join-Path -Path $sourcepath -ChildPath 'xeniface\wmi.mof'
+Copy-FileWithReplacements $src $dst -Replacements $Replacements
diff --git a/src/xeniface.inf b/src/xeniface.inf
index 75d44eb..dd07570 100644
--- a/src/xeniface.inf
+++ b/src/xeniface.inf
@@ -39,13 +39,13 @@ DriverPackageDisplayName=%DiskId1%
 
 [DestinationDirs]
 DefaultDestDir = 12
-Coinst.NT.Copy = 11
-ServiceDestDir.NT.Copy = 11
+Coinst.Copy = 11
+ServiceDestDir.Copy = 11
 
 [Manufacturer]
-%Vendor%=Inst,NT$ARCH$
+%Vendor%=Inst,NT@INF_ARCH@
 
-[Inst.NT$ARCH$]
+[Inst.NT@INF_ARCH@]
 ; DisplayName              Section           DeviceID
 ; -----------              -------           --------
 
@@ -53,21 +53,21 @@ ServiceDestDir.NT.Copy = 11
 %XenIfaceDevice.DeviceDesc% =XenIface_Device, 
XENBUS\VEN_@VENDOR_PREFIX@0001&DEV_IFACE&REV_09000000
 %XenIfaceDevice.DeviceDesc% =XenIface_Device, 
XENBUS\VEN_@VENDOR_PREFIX@0002&DEV_IFACE&REV_09000000
 
-[XenIface_Device.NT$ARCH$]
-CopyFiles=XenIface_Device.NT.Copy
-CopyFiles=ServiceDestDir.NT.Copy
+[XenIface_Device]
+CopyFiles=XenIface_Device.Copy
+CopyFiles=ServiceDestDir.Copy
 
-[XenIFace_Device.NT.Copy]
+[XenIFace_Device.Copy]
 xeniface.sys
 
-[CoInst.NT.Copy]
+[CoInst.Copy]
 
xeniface_coinst_@MAJOR_VERSION@_@MINOR_VERSION@_@MICRO_VERSION@_@BUILD_NUMBER@.dll,xeniface_coinst.dll
 
-[ServiceDestDir.NT.Copy]
+[ServiceDestDir.Copy]
 
xenagent_@MAJOR_VERSION@_@MINOR_VERSION@_@MICRO_VERSION@_@BUILD_NUMBER@.exe,xenagent.exe
 
xenagent_@MAJOR_VERSION@_@MINOR_VERSION@_@MICRO_VERSION@_@BUILD_NUMBER@.dll,xenagent.dll
 
-[Xeniface_Device.NT$ARCH$.Services]
+[Xeniface_Device.Services]
 AddService = xeniface, %SPSVCINST_ASSOCSERVICE%, xeniface_Service_Inst
 AddService = xenagent, %XENAGENT_FLAGS%, 
xenagent_Service_Inst,xenagent_EventLog
 
@@ -83,8 +83,8 @@ AddReg = Xeniface_Parameters
 [Xeniface_Parameters]
 HKR,"Parameters",,0x00000010
 
-[Xeniface_Device.NT$ARCH$.Coinstallers]
-CopyFiles=CoInst.NT.Copy
+[Xeniface_Device.Coinstallers]
+CopyFiles=CoInst.Copy
 AddReg=CoInst_AddReg
 
 [CoInst_AddReg]
diff --git a/symstore.ps1 b/symstore.ps1
new file mode 100644
index 0000000..c89a767
--- /dev/null
+++ b/symstore.ps1
@@ -0,0 +1,36 @@
+#
+# Store symbols for archived build
+#
+param(
+       [string]$SymbolServer = "c:\symbols",
+       [Parameter(Mandatory = $true)]
+       [string]$Arch
+)
+
+Function Add-Symbols {
+       param(
+               [string]$DriverName,
+               [string]$ArchivePath,
+               [string]$SymbolServer,
+               [string]$Arch
+       )
+
+       Write-Host Store symbols from (Resolve-Path $ArchivePath)
+
+       $cwd = Get-Location
+       Set-Location $ArchivePath
+
+       $path = Join-Path -Path ([string]::Format("{0}Debuggers", 
$env:WDKContentRoot)) -ChildPath $Arch
+       $symstore = Join-Path -Path $path -ChildPath "symstore.exe"
+
+       $inffile = [string]::Format("{0}.inf", $DriverName)
+       $Version = (Get-Content -Path $inffile | Select-String 
"DriverVer").Line.Split(',')[1]
+
+       Get-ChildItem -Path "." -Include "*.pdb" -Name | Write-Host
+       & $symstore "add" "/s" $SymbolServer "/r" "/f" "*.pdb" "/t" $DriverName 
"/v" $Version
+
+       Set-Location $cwd
+}
+
+$archivepath = Join-Path -Path (Resolve-Path "xeniface") -ChildPath $Arch
+Add-Symbols "xeniface" $archivepath $SymbolServer $Arch
diff --git a/vs2015/package/package.vcxproj b/vs2015/package/package.vcxproj
index 9dd5617..239d88d 100644
--- a/vs2015/package/package.vcxproj
+++ b/vs2015/package/package.vcxproj
@@ -32,6 +32,12 @@
     <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
     <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Platform)'=='Win32'">
+    <ArchiveDir>..\..\$(SolutionName)\x86</ArchiveDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Platform)'=='x64'">
+    <ArchiveDir>..\..\$(SolutionName)\x64</ArchiveDir>
+  </PropertyGroup>
   <ItemGroup>
     <ProjectReference Include="..\xeniface\xeniface.vcxproj">
       <Project>{22166290-65D8-49D2-BB88-33201797C7D8}</Project>
@@ -45,6 +51,7 @@
     <ProjectReference Include="..\xencontrol\xencontrol.vcxproj">
       <Project>{D386D8E9-D015-4AD2-A5C2-4F845A803FA2}</Project>
     </ProjectReference>
+    <FilesToPackage Include="..\xeniface.inf" />
   </ItemGroup>
   <ItemGroup Condition="Exists('$(DPINST_REDIST)')">
     <FilesToPackage Include="$(DPINST_REDIST)\x86\dpinst.exe" 
Condition="'$(Platform)'=='Win32'" />
@@ -53,4 +60,13 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
+  <ItemGroup>
+    <PackageFiles Include="$(OutDir)\$(ProjectName)\*" />
+  </ItemGroup>
+  <Target Name="Archive" AfterTargets="TestSign">
+    <Copy
+       SourceFiles="@(PackageFiles)"
+       
DestinationFiles="@(PackageFiles->'$(ArchiveDir)\%(FileName)%(Extension)')"
+    />
+  </Target>
 </Project>
diff --git a/vs2015/version/version.vcxproj b/vs2015/version/version.vcxproj
new file mode 100644
index 0000000..e3c95c4
--- /dev/null
+++ b/vs2015/version/version.vcxproj
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <Import Project="..\configs.props" />
+  <Import Project="..\targets.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{65FA97EA-A569-4FC1-BFE7-D68E109143F7}</ProjectGuid>
+  </PropertyGroup>
+  <PropertyGroup>
+    <Script>..\..\scripts\genfiles.ps1</Script>
+    <SolutionDir>..</SolutionDir>
+    <IncludeDir>..\..\include</IncludeDir>
+    <SourceDir>..\..\src</SourceDir>
+  </PropertyGroup>
+  <Target Name="GetNativeManifest"></Target>
+  <Target Name="Build">
+    <Exec Command="powershell.exe -ExecutionPolicy Bypass -NoProfile 
-NonInteractive -File $(Script) $(Platform) $(SolutionDir) $(IncludeDir) 
$(SourceDir)" />
+  </Target>
+  <Target Name="GetCopyToOutputDirectoryItems"></Target>
+</Project>
diff --git a/vs2015/xenagent/xenagent.vcxproj b/vs2015/xenagent/xenagent.vcxproj
index 92b140e..a5e3460 100644
--- a/vs2015/xenagent/xenagent.vcxproj
+++ b/vs2015/xenagent/xenagent.vcxproj
@@ -62,7 +62,6 @@
     <FilesToPackage Include="$(TargetPath)" />
     <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
     <FilesToPackage Include="$(OutDir)$(TargetName).dll" />
-    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
   </ItemGroup>
   <ItemGroup>
     <MessageCompile Include="..\..\src\xenagent\messages.mc" />
diff --git a/vs2015/xeniface.sln b/vs2015/xeniface.sln
index 7f08c1c..d7fc6ad 100644
--- a/vs2015/xeniface.sln
+++ b/vs2015/xeniface.sln
@@ -2,20 +2,35 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 14
 VisualStudioVersion = 14.0.25420.1
 MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "version", 
"version\version.vcxproj", "{65FA97EA-A569-4FC1-BFE7-D68E109143F7}"
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xeniface_coinst", 
"xeniface_coinst\xeniface_coinst.vcxproj", 
"{85C731AD-2EA2-4049-A542-D2D38EDE938C}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xeniface", 
"xeniface\xeniface.vcxproj", "{22166290-65D8-49D2-BB88-33201797C7D8}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenagent", 
"xenagent\xenagent.vcxproj", "{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", 
"package\package.vcxproj", "{9B071A35-897C-477A-AEB7-95F77618A21D}"
        ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
                {22166290-65D8-49D2-BB88-33201797C7D8} = 
{22166290-65D8-49D2-BB88-33201797C7D8}
                {85C731AD-2EA2-4049-A542-D2D38EDE938C} = 
{85C731AD-2EA2-4049-A542-D2D38EDE938C}
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B} = 
{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}
        EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencontrol", 
"xencontrol\xencontrol.vcxproj", "{D386D8E9-D015-4AD2-A5C2-4F845A803FA2}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -29,6 +44,22 @@ Global
                Windows 10 Release|x64 = Windows 10 Release|x64
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Debug|Win32.Build.0 = Windows 10 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Debug|x64.ActiveCfg = Windows 10 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Debug|x64.Build.0 = Windows 10 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Release|Win32.ActiveCfg = Windows 10 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Release|Win32.Build.0 = Windows 10 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Release|x64.ActiveCfg = Windows 10 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Release|x64.Build.0 = Windows 10 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Debug|x64.Build.0 = Windows 8 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Release|Win32.ActiveCfg = Windows 8 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Release|Win32.Build.0 = Windows 8 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Release|x64.ActiveCfg = Windows 8 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Release|x64.Build.0 = Windows 8 Release|x64
                {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
                {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Debug|Win32.Build.0 = Windows 8 Debug|Win32
                {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Debug|Win32.Deploy.0 = Windows 8 Debug|Win32
diff --git a/vs2015/xeniface/xeniface.vcxproj b/vs2015/xeniface/xeniface.vcxproj
index d02c770..4ac4d50 100644
--- a/vs2015/xeniface/xeniface.vcxproj
+++ b/vs2015/xeniface/xeniface.vcxproj
@@ -35,33 +35,20 @@
       
<AdditionalDependencies>$(DDK_LIB_PATH)\ntstrsafe.lib;$(DDK_LIB_PATH)\procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <EnableCOMDATFolding>false</EnableCOMDATFolding>
     </Link>
-    <Inf>
-      <SpecifyArchitecture>true</SpecifyArchitecture>
-      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
-      
<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
-      <EnableVerbose>true</EnableVerbose>
-    </Inf>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
     <ClCompile>
       
<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
-    <Inf>
-      <Architecture>x86</Architecture>
-    </Inf>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
     <ClCompile>
       
<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
-    <Inf>
-      <Architecture>amd64</Architecture>
-    </Inf>
   </ItemDefinitionGroup>
   <ItemGroup>
     <FilesToPackage Include="$(TargetPath)" />
     <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\xeniface\ioctls.c" />
@@ -90,8 +77,5 @@
   <ItemGroup>
     <ResourceCompile Include="..\..\src\xeniface\xeniface.rc" />
   </ItemGroup>
-  <ItemGroup>
-    <Inf Include="..\xeniface.inf" />
-  </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 </Project>
diff --git a/vs2015/xeniface_coinst/xeniface_coinst.vcxproj 
b/vs2015/xeniface_coinst/xeniface_coinst.vcxproj
index 7393c53..f8c99db 100644
--- a/vs2015/xeniface_coinst/xeniface_coinst.vcxproj
+++ b/vs2015/xeniface_coinst/xeniface_coinst.vcxproj
@@ -48,7 +48,6 @@
   <ItemGroup>
     <FilesToPackage Include="$(TargetPath)" />
     <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\coinst\coinst.c" />
diff --git a/vs2017/package/package.vcxproj b/vs2017/package/package.vcxproj
index 7060312..31dacd3 100644
--- a/vs2017/package/package.vcxproj
+++ b/vs2017/package/package.vcxproj
@@ -32,6 +32,12 @@
     <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
     <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Platform)'=='Win32'">
+    <ArchiveDir>..\..\$(SolutionName)\x86</ArchiveDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Platform)'=='x64'">
+    <ArchiveDir>..\..\$(SolutionName)\x64</ArchiveDir>
+  </PropertyGroup>
   <ItemGroup>
     <ProjectReference Include="..\xeniface\xeniface.vcxproj">
       <Project>{22166290-65D8-49D2-BB88-33201797C7D8}</Project>
@@ -45,6 +51,7 @@
     <ProjectReference Include="..\xencontrol\xencontrol.vcxproj">
       <Project>{D386D8E9-D015-4AD2-A5C2-4F845A803FA2}</Project>
     </ProjectReference>
+    <FilesToPackage Include="..\xeniface.inf" />
   </ItemGroup>
   <ItemGroup Condition="Exists('$(DPINST_REDIST)')">
     <FilesToPackage Include="$(DPINST_REDIST)\x86\dpinst.exe" 
Condition="'$(Platform)'=='Win32'" />
@@ -53,4 +60,13 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
+  <ItemGroup>
+    <PackageFiles Include="$(OutDir)\$(ProjectName)\*" />
+  </ItemGroup>
+  <Target Name="Archive" AfterTargets="TestSign">
+    <Copy
+      SourceFiles="@(PackageFiles)"
+      
DestinationFiles="@(PackageFiles->'$(ArchiveDir)\%(FileName)%(Extension)')"
+    />
+  </Target>
 </Project>
diff --git a/vs2017/version/version.vcxproj b/vs2017/version/version.vcxproj
new file mode 100644
index 0000000..9d149d0
--- /dev/null
+++ b/vs2017/version/version.vcxproj
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{65FA97EA-A569-4FC1-BFE7-D68E109143F7}</ProjectGuid>
+  </PropertyGroup>
+  <PropertyGroup>
+    <Script>..\..\scripts\genfiles.ps1</Script>
+    <SolutionDir>..</SolutionDir>
+    <IncludeDir>..\..\include</IncludeDir>
+    <SourceDir>..\..\src</SourceDir>
+  </PropertyGroup>
+  <Target Name="Build">
+    <Exec Command="powershell.exe -ExecutionPolicy Bypass -NoProfile 
-NonInteractive -File $(Script) $(Platform) $(SolutionDir) $(IncludeDir) 
$(SourceDir)" />
+  </Target>
+</Project>
diff --git a/vs2017/xenagent/xenagent.vcxproj b/vs2017/xenagent/xenagent.vcxproj
index 6a17308..b246af5 100644
--- a/vs2017/xenagent/xenagent.vcxproj
+++ b/vs2017/xenagent/xenagent.vcxproj
@@ -62,7 +62,6 @@
     <FilesToPackage Include="$(TargetPath)" />
     <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
     <FilesToPackage Include="$(OutDir)$(TargetName).dll" />
-    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
   </ItemGroup>
   <ItemGroup>
     <MessageCompile Include="..\..\src\xenagent\messages.mc" />
diff --git a/vs2017/xeniface.sln b/vs2017/xeniface.sln
index 1eb8156..1bdc66a 100644
--- a/vs2017/xeniface.sln
+++ b/vs2017/xeniface.sln
@@ -2,16 +2,31 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 14
 VisualStudioVersion = 14.0.25420.1
 MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "version", 
"version\version.vcxproj", "{65FA97EA-A569-4FC1-BFE7-D68E109143F7}"
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xeniface_coinst", 
"xeniface_coinst\xeniface_coinst.vcxproj", 
"{85C731AD-2EA2-4049-A542-D2D38EDE938C}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xeniface", 
"xeniface\xeniface.vcxproj", "{22166290-65D8-49D2-BB88-33201797C7D8}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenagent", 
"xenagent\xenagent.vcxproj", "{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencontrol", 
"xencontrol\xencontrol.vcxproj", "{D386D8E9-D015-4AD2-A5C2-4F845A803FA2}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", 
"package\package.vcxproj", "{9B071A35-897C-477A-AEB7-95F77618A21D}"
        ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}
                {22166290-65D8-49D2-BB88-33201797C7D8} = 
{22166290-65D8-49D2-BB88-33201797C7D8}
                {85C731AD-2EA2-4049-A542-D2D38EDE938C} = 
{85C731AD-2EA2-4049-A542-D2D38EDE938C}
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B} = 
{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}
@@ -30,6 +45,22 @@ Global
                Windows 10 Release|x64 = Windows 10 Release|x64
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Debug|Win32.Build.0 = Windows 10 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Debug|x64.ActiveCfg = Windows 10 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Debug|x64.Build.0 = Windows 10 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Release|Win32.ActiveCfg = Windows 10 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Release|Win32.Build.0 = Windows 10 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Release|x64.ActiveCfg = Windows 10 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 
Release|x64.Build.0 = Windows 10 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Debug|x64.Build.0 = Windows 8 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Release|Win32.ActiveCfg = Windows 8 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Release|Win32.Build.0 = Windows 8 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Release|x64.ActiveCfg = Windows 8 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 
Release|x64.Build.0 = Windows 8 Release|x64
                {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
                {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Debug|Win32.Build.0 = Windows 8 Debug|Win32
                {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Debug|Win32.Deploy.0 = Windows 8 Debug|Win32
diff --git a/vs2017/xeniface/xeniface.vcxproj b/vs2017/xeniface/xeniface.vcxproj
index bb48955..ab74b40 100644
--- a/vs2017/xeniface/xeniface.vcxproj
+++ b/vs2017/xeniface/xeniface.vcxproj
@@ -36,28 +36,16 @@
       
<AdditionalDependencies>$(DDK_LIB_PATH)\ntstrsafe.lib;$(DDK_LIB_PATH)\procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
     </Link>
-    <Inf>
-      <SpecifyArchitecture>true</SpecifyArchitecture>
-      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
-      
<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
-      <EnableVerbose>true</EnableVerbose>
-    </Inf>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
     <ClCompile>
       
<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
-    <Inf>
-      <Architecture>x86</Architecture>
-    </Inf>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
     <ClCompile>
       
<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
-    <Inf>
-      <Architecture>amd64</Architecture>
-    </Inf>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)'=='Windows 8 Release'">
     <ClCompile>
@@ -69,7 +57,6 @@
   <ItemGroup>
     <FilesToPackage Include="$(TargetPath)" />
     <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\xeniface\ioctls.c" />
@@ -98,8 +85,5 @@
   <ItemGroup>
     <ResourceCompile Include="..\..\src\xeniface\xeniface.rc" />
   </ItemGroup>
-  <ItemGroup>
-    <Inf Include="..\xeniface.inf" />
-  </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 </Project>
diff --git a/vs2017/xeniface_coinst/xeniface_coinst.vcxproj 
b/vs2017/xeniface_coinst/xeniface_coinst.vcxproj
index d1988c2..b011416 100644
--- a/vs2017/xeniface_coinst/xeniface_coinst.vcxproj
+++ b/vs2017/xeniface_coinst/xeniface_coinst.vcxproj
@@ -48,7 +48,6 @@
   <ItemGroup>
     <FilesToPackage Include="$(TargetPath)" />
     <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
-    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\coinst\coinst.c" />
-- 
2.16.2.windows.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/win-pv-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.