From ed510ba9f7f438cc7ebb44268d97a3d38093e342 Mon Sep 17 00:00:00 2001 From: Dipesh Kumar Date: Tue, 9 Dec 2025 18:50:36 +0530 Subject: [PATCH 01/15] Updating MSVC Toolset version to v145 --- eng/WpfArcadeSdk/tools/Wpf.Cpp.props | 4 ++-- src/Microsoft.DotNet.Wpf/redist/VCRuntime/VCRuntime.vcxproj | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/eng/WpfArcadeSdk/tools/Wpf.Cpp.props b/eng/WpfArcadeSdk/tools/Wpf.Cpp.props index 66c8df51e68..a7307533951 100644 --- a/eng/WpfArcadeSdk/tools/Wpf.Cpp.props +++ b/eng/WpfArcadeSdk/tools/Wpf.Cpp.props @@ -4,10 +4,10 @@ Unicode - v143 + v145 - 10.0.19041.0 + 10.0.26100.0 DynamicLibrary diff --git a/src/Microsoft.DotNet.Wpf/redist/VCRuntime/VCRuntime.vcxproj b/src/Microsoft.DotNet.Wpf/redist/VCRuntime/VCRuntime.vcxproj index a108a064332..3b6151c314e 100644 --- a/src/Microsoft.DotNet.Wpf/redist/VCRuntime/VCRuntime.vcxproj +++ b/src/Microsoft.DotNet.Wpf/redist/VCRuntime/VCRuntime.vcxproj @@ -33,8 +33,8 @@ - Microsoft.VC143.CRT - Microsoft.VC143.DebugCRT + Microsoft.VC145.CRT + Microsoft.VC145.DebugCRT - 10.0.0-rc.1.25603.4 + 10.0.0-rc.1.25609.7 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 0d5892f0e2d..3cc6f28a563 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -22,9 +22,9 @@ https://github.com/dotnet/dotnet d119b40e8ff3b88f87ad60b04c807233a159b197 - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf-int - fe8feea90bc685260d2e3e80d285271f7c44794c + 7b194d1da9c86db654df89ab762a07ac714a95ba https://github.com/dotnet/dotnet From 7be7691d9299cab1bc47941587c2bf089ad24f2c Mon Sep 17 00:00:00 2001 From: Dipesh Kumar Date: Thu, 11 Dec 2025 14:25:16 +0530 Subject: [PATCH 05/15] Enabling use of ATL in PenImc --- src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj b/src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj index 682849cdce1..a205948b5a7 100644 --- a/src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj +++ b/src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj @@ -71,7 +71,7 @@ Use - false + true _MERGE_PROXYSTUB;_USRDLL;%(PreprocessorDefinitions) %(AdditionalIncludeDirectories);$(WpfSourceDir)PenImc\inc\;$(IntermediateOutputPath) From 1c21d3b1fa69dd48898c12b4a795c99f97f102e0 Mon Sep 17 00:00:00 2001 From: Dipesh Kumar Date: Thu, 11 Dec 2025 16:26:05 +0530 Subject: [PATCH 06/15] Adding C++ ATL Components manually --- azure-pipelines-pr.yml | 21 +++++++++++++++++++ .../src/PenImc/dll/PenImc.vcxproj | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/azure-pipelines-pr.yml b/azure-pipelines-pr.yml index a8d270a4d2c..16acc6b624f 100644 --- a/azure-pipelines-pr.yml +++ b/azure-pipelines-pr.yml @@ -119,6 +119,27 @@ stages: - powershell: eng\pre-build.ps1 displayName: Pre-Build - Set VSO Variables + # Install required VS components from wpf.vsconfig + - powershell: | + $vsInstallerPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vs_installer.exe" + $vsconfigPath = "$(Build.SourcesDirectory)\Documentation\wpf.vsconfig" + + if (Test-Path $vsInstallerPath) { + if (Test-Path $vsconfigPath) { + Write-Host "Installing VS components from wpf.vsconfig..." + & "$vsInstallerPath" modify --installPath "C:\Program Files\Microsoft Visual Studio\18\Insider" --config "$vsconfigPath" --quiet --norestart --wait + if ($LASTEXITCODE -ne 0) { + Write-Warning "VS installer returned exit code $LASTEXITCODE" + } + } else { + Write-Warning "wpf.vsconfig not found at $vsconfigPath" + } + } else { + Write-Warning "VS Installer not found at $vsInstallerPath" + } + displayName: Install VS Components from wpf.vsconfig + condition: eq(variables['_Platform'], 'arm64') + - template: /eng/common/templates/steps/enable-internal-sources.yml - template: /eng/common/templates/steps/enable-internal-runtimes.yml diff --git a/src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj b/src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj index a205948b5a7..8920e844103 100644 --- a/src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj +++ b/src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj @@ -1,5 +1,5 @@ - + Debug @@ -71,7 +71,7 @@ Use - true + false _MERGE_PROXYSTUB;_USRDLL;%(PreprocessorDefinitions) %(AdditionalIncludeDirectories);$(WpfSourceDir)PenImc\inc\;$(IntermediateOutputPath) From 4fac4bb807594fa302b0f0c30db9dccd48a50f13 Mon Sep 17 00:00:00 2001 From: Dipesh Kumar Date: Thu, 11 Dec 2025 16:39:43 +0530 Subject: [PATCH 07/15] Adding test steps to verify the installed components --- azure-pipelines-pr.yml | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/azure-pipelines-pr.yml b/azure-pipelines-pr.yml index 16acc6b624f..beb5040cff0 100644 --- a/azure-pipelines-pr.yml +++ b/azure-pipelines-pr.yml @@ -119,6 +119,29 @@ stages: - powershell: eng\pre-build.ps1 displayName: Pre-Build - Set VSO Variables + # Check installed VS components + - powershell: | + $vsWherePath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" + + if (Test-Path $vsWherePath) { + Write-Host "Checking installed Visual Studio components..." + $vsPath = & "$vsWherePath" -latest -prerelease -property installationPath + Write-Host "VS Installation Path: $vsPath" + + Write-Host "`nInstalled components:" + & "$vsWherePath" -latest -prerelease -format json | ConvertFrom-Json | ForEach-Object { + if ($_.packages) { + $_.packages | Where-Object { $_.id -like "*ARM64*" -or $_.id -like "*ATL*" } | ForEach-Object { + Write-Host " - $($_.id) (Version: $($_.version))" + } + } + } + } else { + Write-Warning "vswhere.exe not found at $vsWherePath" + } + displayName: Check Installed VS Components + condition: eq(variables['_Platform'], 'arm64') + # Install required VS components from wpf.vsconfig - powershell: | $vsInstallerPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vs_installer.exe" @@ -127,7 +150,7 @@ stages: if (Test-Path $vsInstallerPath) { if (Test-Path $vsconfigPath) { Write-Host "Installing VS components from wpf.vsconfig..." - & "$vsInstallerPath" modify --installPath "C:\Program Files\Microsoft Visual Studio\18\Insider" --config "$vsconfigPath" --quiet --norestart --wait + & "$vsInstallerPath" modify --installPath "C:\Program Files\Microsoft Visual Studio\18\Insider" --config "$vsconfigPath" --norestart --wait if ($LASTEXITCODE -ne 0) { Write-Warning "VS installer returned exit code $LASTEXITCODE" } From 9fdba0edf38a575f8e892afafe12d79c738bb0c5 Mon Sep 17 00:00:00 2001 From: Dipesh Kumar Date: Thu, 11 Dec 2025 17:02:45 +0530 Subject: [PATCH 08/15] Fixing VS install path --- azure-pipelines-pr.yml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/azure-pipelines-pr.yml b/azure-pipelines-pr.yml index beb5040cff0..9fc8e936b73 100644 --- a/azure-pipelines-pr.yml +++ b/azure-pipelines-pr.yml @@ -93,19 +93,19 @@ stages: strategy: matrix: - Build_Debug_x86: - _BuildConfig: Debug - Build_Release_x86: - _BuildConfig: Release - Build_Debug_x64: - _BuildConfig: Debug - _Coverage: true - # override some variables for debug - # _SignType has to be real for package publishing to succeed - do not override to test. - _Platform: x64 - Build_Release_x64: - _BuildConfig: Release - _Platform: x64 + # Build_Debug_x86: + # _BuildConfig: Debug + # Build_Release_x86: + # _BuildConfig: Release + # Build_Debug_x64: + # _BuildConfig: Debug + # _Coverage: true + # # override some variables for debug + # # _SignType has to be real for package publishing to succeed - do not override to test. + # _Platform: x64 + # Build_Release_x64: + # _BuildConfig: Release + # _Platform: x64 Build_Debug_arm64: _BuildConfig: Debug # override some variables for debug @@ -150,7 +150,7 @@ stages: if (Test-Path $vsInstallerPath) { if (Test-Path $vsconfigPath) { Write-Host "Installing VS components from wpf.vsconfig..." - & "$vsInstallerPath" modify --installPath "C:\Program Files\Microsoft Visual Studio\18\Insider" --config "$vsconfigPath" --norestart --wait + & "$vsInstallerPath" modify --installPath "C:\Program Files\Microsoft Visual Studio\18\Insiders" --config "$vsconfigPath" --norestart --wait if ($LASTEXITCODE -ne 0) { Write-Warning "VS installer returned exit code $LASTEXITCODE" } From 68f8b885376eae246aff2852f20bec8c49931b10 Mon Sep 17 00:00:00 2001 From: Dipesh Kumar Date: Thu, 11 Dec 2025 17:05:45 +0530 Subject: [PATCH 09/15] Updated thewpf.vsconfig to include C++ ATL dependencies for ARM64 --- Documentation/wpf.vsconfig | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Documentation/wpf.vsconfig b/Documentation/wpf.vsconfig index cf63b5803fb..138ba06a80e 100644 --- a/Documentation/wpf.vsconfig +++ b/Documentation/wpf.vsconfig @@ -15,6 +15,8 @@ "Microsoft.VisualStudio.Component.TextTemplating", "Microsoft.VisualStudio.Component.VC.ATL", "Microsoft.VisualStudio.Component.VC.ATLMFC", + "Microsoft.VisualStudio.Component.VC.ATL.ARM64", + "Microsoft.VisualStudio.Component.VC.14.50.18.0.ATL.ARM64", "Microsoft.VisualStudio.Component.VC.CLI.Support", "Microsoft.VisualStudio.Component.VC.CoreIde", "Microsoft.VisualStudio.Component.VC.Modules.x86.x64", @@ -24,4 +26,4 @@ "Microsoft.VisualStudio.Component.Windows10SDK.19041", "Microsoft.VisualStudio.Component.Windows11SDK.26100" ] -} +} \ No newline at end of file From 3584b455c12620e9ba9b49745afe3e22f8372fa7 Mon Sep 17 00:00:00 2001 From: Dipesh Kumar Date: Thu, 11 Dec 2025 17:20:00 +0530 Subject: [PATCH 10/15] Installing the components directly --- azure-pipelines-pr.yml | 43 +++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/azure-pipelines-pr.yml b/azure-pipelines-pr.yml index 9fc8e936b73..0adcbb3bada 100644 --- a/azure-pipelines-pr.yml +++ b/azure-pipelines-pr.yml @@ -142,25 +142,46 @@ stages: displayName: Check Installed VS Components condition: eq(variables['_Platform'], 'arm64') - # Install required VS components from wpf.vsconfig + # Install ARM64 ATL components - powershell: | $vsInstallerPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vs_installer.exe" - $vsconfigPath = "$(Build.SourcesDirectory)\Documentation\wpf.vsconfig" + $vsInstallPath = "C:\Program Files\Microsoft Visual Studio\18\Insiders" if (Test-Path $vsInstallerPath) { - if (Test-Path $vsconfigPath) { - Write-Host "Installing VS components from wpf.vsconfig..." - & "$vsInstallerPath" modify --installPath "C:\Program Files\Microsoft Visual Studio\18\Insiders" --config "$vsconfigPath" --norestart --wait - if ($LASTEXITCODE -ne 0) { - Write-Warning "VS installer returned exit code $LASTEXITCODE" - } + Write-Host "Installing ARM64 ATL components..." + Write-Host "VS Installer: $vsInstallerPath" + Write-Host "VS Install Path: $vsInstallPath" + + $components = @( + "Microsoft.VisualStudio.Component.VC.ATL.ARM64", + "Microsoft.VisualStudio.Component.VC.14.50.18.0.ATL.ARM64" + ) + + Write-Host "`nComponents to install:" + $components | ForEach-Object { Write-Host " - $_" } + + $addArgs = $components | ForEach-Object { "--add", $_ } + $allArgs = @("modify", "--installPath", $vsInstallPath) + $addArgs + @("--quiet", "--norestart", "--wait") + + Write-Host "`nExecuting: vs_installer.exe $($allArgs -join ' ')" + & "$vsInstallerPath" $allArgs + + $exitCode = $LASTEXITCODE + Write-Host "`nInstallation completed with exit code: $exitCode" + + if ($exitCode -eq 0) { + Write-Host "##[section]Installation succeeded" + } elseif ($exitCode -eq 3010) { + Write-Host "##[warning]Installation succeeded but requires restart (exit code 3010)" } else { - Write-Warning "wpf.vsconfig not found at $vsconfigPath" + Write-Host "##[error]Installation failed with exit code $exitCode" + exit $exitCode } } else { - Write-Warning "VS Installer not found at $vsInstallerPath" + Write-Host "##[error]VS Installer not found at $vsInstallerPath" + exit 1 } - displayName: Install VS Components from wpf.vsconfig + displayName: Install ARM64 ATL Components condition: eq(variables['_Platform'], 'arm64') - template: /eng/common/templates/steps/enable-internal-sources.yml From f12a6df3a443c13bae308858d75c7b9352c87d72 Mon Sep 17 00:00:00 2001 From: Dipesh Kumar Date: Thu, 11 Dec 2025 18:06:52 +0530 Subject: [PATCH 11/15] Enable logging for VS Component installation step --- azure-pipelines-pr.yml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/azure-pipelines-pr.yml b/azure-pipelines-pr.yml index 0adcbb3bada..7ffb804daf5 100644 --- a/azure-pipelines-pr.yml +++ b/azure-pipelines-pr.yml @@ -144,11 +144,12 @@ stages: # Install ARM64 ATL components - powershell: | + $ErrorActionPreference = "Continue" $vsInstallerPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vs_installer.exe" $vsInstallPath = "C:\Program Files\Microsoft Visual Studio\18\Insiders" if (Test-Path $vsInstallerPath) { - Write-Host "Installing ARM64 ATL components..." + Write-Host "##[section]Installing ARM64 ATL components..." Write-Host "VS Installer: $vsInstallerPath" Write-Host "VS Install Path: $vsInstallPath" @@ -161,13 +162,16 @@ stages: $components | ForEach-Object { Write-Host " - $_" } $addArgs = $components | ForEach-Object { "--add", $_ } - $allArgs = @("modify", "--installPath", $vsInstallPath) + $addArgs + @("--quiet", "--norestart", "--wait") + $allArgs = @("modify", "--installPath", $vsInstallPath) + $addArgs + @("--norestart", "--wait") Write-Host "`nExecuting: vs_installer.exe $($allArgs -join ' ')" - & "$vsInstallerPath" $allArgs + Write-Host "##[command]& `"$vsInstallerPath`" $($allArgs -join ' ')" + + $output = & "$vsInstallerPath" $allArgs 2>&1 | Tee-Object -Variable installerOutput + $output | ForEach-Object { Write-Host $_ } $exitCode = $LASTEXITCODE - Write-Host "`nInstallation completed with exit code: $exitCode" + Write-Host "`n##[section]Installation completed with exit code: $exitCode" if ($exitCode -eq 0) { Write-Host "##[section]Installation succeeded" @@ -175,6 +179,7 @@ stages: Write-Host "##[warning]Installation succeeded but requires restart (exit code 3010)" } else { Write-Host "##[error]Installation failed with exit code $exitCode" + Write-Host "##[error]Installer output: $installerOutput" exit $exitCode } } else { From 5cd43df0fe8376f6b488c51fe9645f1caf11f06e Mon Sep 17 00:00:00 2001 From: Dipesh Kumar Date: Thu, 11 Dec 2025 18:28:10 +0530 Subject: [PATCH 12/15] Reverting few changes --- azure-pipelines-pr.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/azure-pipelines-pr.yml b/azure-pipelines-pr.yml index 7ffb804daf5..3ecb7003c5d 100644 --- a/azure-pipelines-pr.yml +++ b/azure-pipelines-pr.yml @@ -144,7 +144,6 @@ stages: # Install ARM64 ATL components - powershell: | - $ErrorActionPreference = "Continue" $vsInstallerPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vs_installer.exe" $vsInstallPath = "C:\Program Files\Microsoft Visual Studio\18\Insiders" From 330611816132ae293c44d4f7d6b852c7cffe39b1 Mon Sep 17 00:00:00 2001 From: Dipesh Kumar Date: Thu, 11 Dec 2025 18:47:11 +0530 Subject: [PATCH 13/15] Removing the output log changes --- azure-pipelines-pr.yml | 8 ++------ src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj | 1 - 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/azure-pipelines-pr.yml b/azure-pipelines-pr.yml index 3ecb7003c5d..b9459680340 100644 --- a/azure-pipelines-pr.yml +++ b/azure-pipelines-pr.yml @@ -153,7 +153,6 @@ stages: Write-Host "VS Install Path: $vsInstallPath" $components = @( - "Microsoft.VisualStudio.Component.VC.ATL.ARM64", "Microsoft.VisualStudio.Component.VC.14.50.18.0.ATL.ARM64" ) @@ -164,10 +163,8 @@ stages: $allArgs = @("modify", "--installPath", $vsInstallPath) + $addArgs + @("--norestart", "--wait") Write-Host "`nExecuting: vs_installer.exe $($allArgs -join ' ')" - Write-Host "##[command]& `"$vsInstallerPath`" $($allArgs -join ' ')" - - $output = & "$vsInstallerPath" $allArgs 2>&1 | Tee-Object -Variable installerOutput - $output | ForEach-Object { Write-Host $_ } + + & "$vsInstallerPath" $allArgs $exitCode = $LASTEXITCODE Write-Host "`n##[section]Installation completed with exit code: $exitCode" @@ -178,7 +175,6 @@ stages: Write-Host "##[warning]Installation succeeded but requires restart (exit code 3010)" } else { Write-Host "##[error]Installation failed with exit code $exitCode" - Write-Host "##[error]Installer output: $installerOutput" exit $exitCode } } else { diff --git a/src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj b/src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj index 8920e844103..c5c8ea97f0c 100644 --- a/src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj +++ b/src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj @@ -71,7 +71,6 @@ Use - false _MERGE_PROXYSTUB;_USRDLL;%(PreprocessorDefinitions) %(AdditionalIncludeDirectories);$(WpfSourceDir)PenImc\inc\;$(IntermediateOutputPath) From 8cedba39e223c51336de0a4331041d43ad22fef0 Mon Sep 17 00:00:00 2001 From: Dipesh Kumar Date: Thu, 11 Dec 2025 20:13:14 +0530 Subject: [PATCH 14/15] Modifying the installation command parameters --- azure-pipelines-pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines-pr.yml b/azure-pipelines-pr.yml index b9459680340..dc1180b002f 100644 --- a/azure-pipelines-pr.yml +++ b/azure-pipelines-pr.yml @@ -160,7 +160,7 @@ stages: $components | ForEach-Object { Write-Host " - $_" } $addArgs = $components | ForEach-Object { "--add", $_ } - $allArgs = @("modify", "--installPath", $vsInstallPath) + $addArgs + @("--norestart", "--wait") + $allArgs = @("modify", "--installPath", $vsInstallPath) + $addArgs + @("--norestart", "--quiet") Write-Host "`nExecuting: vs_installer.exe $($allArgs -join ' ')" From b7276a9239e6bffdbd515f208221c03197ba2ead Mon Sep 17 00:00:00 2001 From: Dipesh Kumar Date: Thu, 11 Dec 2025 22:18:14 +0530 Subject: [PATCH 15/15] Removing unnecessary changes --- azure-pipelines-pr.yml | 26 +++++++++---------- .../src/PenImc/dll/PenImc.vcxproj | 3 ++- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/azure-pipelines-pr.yml b/azure-pipelines-pr.yml index dc1180b002f..7dd92394c8d 100644 --- a/azure-pipelines-pr.yml +++ b/azure-pipelines-pr.yml @@ -93,19 +93,19 @@ stages: strategy: matrix: - # Build_Debug_x86: - # _BuildConfig: Debug - # Build_Release_x86: - # _BuildConfig: Release - # Build_Debug_x64: - # _BuildConfig: Debug - # _Coverage: true - # # override some variables for debug - # # _SignType has to be real for package publishing to succeed - do not override to test. - # _Platform: x64 - # Build_Release_x64: - # _BuildConfig: Release - # _Platform: x64 + Build_Debug_x86: + _BuildConfig: Debug + Build_Release_x86: + _BuildConfig: Release + Build_Debug_x64: + _BuildConfig: Debug + _Coverage: true + # override some variables for debug + # _SignType has to be real for package publishing to succeed - do not override to test. + _Platform: x64 + Build_Release_x64: + _BuildConfig: Release + _Platform: x64 Build_Debug_arm64: _BuildConfig: Debug # override some variables for debug diff --git a/src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj b/src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj index c5c8ea97f0c..682849cdce1 100644 --- a/src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj +++ b/src/Microsoft.DotNet.Wpf/src/PenImc/dll/PenImc.vcxproj @@ -1,5 +1,5 @@ - + Debug @@ -71,6 +71,7 @@ Use + false _MERGE_PROXYSTUB;_USRDLL;%(PreprocessorDefinitions) %(AdditionalIncludeDirectories);$(WpfSourceDir)PenImc\inc\;$(IntermediateOutputPath)