Difference between revisions of "VSTO"
From Blue-IT.org Wiki
(→Why) |
(→Why) |
||
Line 7: | Line 7: | ||
* [http://docs.nuget.org|nuget packages are also opensource] | * [http://docs.nuget.org|nuget packages are also opensource] | ||
* [http://www.mono-project.com|The mono project growths faster and faster] | * [http://www.mono-project.com|The mono project growths faster and faster] | ||
− | |||
− | |||
And: | And: | ||
Line 16: | Line 14: | ||
In most cases Word, Excel and Powerpoint are the most often used programs in business for daily communication. It is like it is. Beeing able - now - without any restrictions, to program MS-Office legally also for commercial usage. The only "drawback" is: you HAVE TO register the application and therefore create a microsoft account to be able to work with it. | In most cases Word, Excel and Powerpoint are the most often used programs in business for daily communication. It is like it is. Beeing able - now - without any restrictions, to program MS-Office legally also for commercial usage. The only "drawback" is: you HAVE TO register the application and therefore create a microsoft account to be able to work with it. | ||
+ | |||
+ | |||
+ | And i am really impressed about the statefent from Microsoft: | ||
+ | |||
+ | |||
+ | <cite> | ||
+ | [...] | ||
+ | As a .NET developer you were able to build & run code on more than just Windows for a while now, including Linux, MacOS, iOs and Android. | ||
+ | <br/><br/> | ||
+ | The challenge is that the Windows implementation has one code base while Mono has a completely separate code base. The Mono community was essentially forced to re-implement .NET because no open source implementation was available. Sure, the source code was available since Rotor but we didn’t use an OSI approved open source license, which made Rotor a non-starter. Customers have reported various mismatches, which are hard to fix because neither side can look at the code of the other side. This also results in a lot of duplicated work in areas that aren’t actually platform specific. A recent example is immutable collections. | ||
+ | <br/><br/> | ||
+ | The best way to build a cross-platform stack is to build a single stack, in a collaborative manner. And the best way to do exactly that is by open sourcing it. | ||
+ | </cite> | ||
+ | *Source: [http://blogs.msdn.com/b/dotnet/archive/2014/11/12/net-core-is-open-source.aspx| MSDN blogpost from November 2014] | ||
= Troubleshooting = | = Troubleshooting = |
Revision as of 11:30, 17 November 2015
Contents
Why
So, why VSTO here in an OpenSource themed wiki?
Since 2015 .NET and C# is opensource (really):
- Dotnet on GitHub
- dotnetfoundation
- packages are also opensource
- mono project growths faster and faster
And:
- You can get the Visual Studio Comunity Edition for free (really free also for commercial use, if you are not working for a > 250 men company)
- Word an Excel are running fine with wine (see #MSOffice_2010_and_Wine) - Outlook not tested yet,
In most cases Word, Excel and Powerpoint are the most often used programs in business for daily communication. It is like it is. Beeing able - now - without any restrictions, to program MS-Office legally also for commercial usage. The only "drawback" is: you HAVE TO register the application and therefore create a microsoft account to be able to work with it.
And i am really impressed about the statefent from Microsoft:
[...]
As a .NET developer you were able to build & run code on more than just Windows for a while now, including Linux, MacOS, iOs and Android.
The challenge is that the Windows implementation has one code base while Mono has a completely separate code base. The Mono community was essentially forced to re-implement .NET because no open source implementation was available. Sure, the source code was available since Rotor but we didn’t use an OSI approved open source license, which made Rotor a non-starter. Customers have reported various mismatches, which are hard to fix because neither side can look at the code of the other side. This also results in a lot of duplicated work in areas that aren’t actually platform specific. A recent example is immutable collections.
The best way to build a cross-platform stack is to build a single stack, in a collaborative manner. And the best way to do exactly that is by open sourcing it.
- Source: MSDN blogpost from November 2014
Troubleshooting
Clickonce
Pre- and post build
Uninstall vsto plugin via command line
If you are developing you Addins with Visual Studio and you like to test your AddIn on the same machine, this won't work. VS complains when starting the AddIn, that it is already installed ;-(
Also this is Ok, it is very annoying when developing and testing on a single machine. The easiest way is to uninstall the plugin, before you test your applications:
You get the uninstall string if you search your registry (regedit.exe) in:
"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall"
which you can easyly do in cmd with:
REG QUERY HKCU /v "*YOUR_PLUGIN_NAME.vsto" /s
or
REG QUERY HKCU /v "*.vsto" /s
The location of the VSTOInstaller.exe you can search for with
dir /s /b VSTOInstaller.exe
Put this into your Project directory as a .bat file and edit $(ProjectDir)"UninstallPlugin.bat" like this:
"c:\Program Files\Common Files\Microsoft Shared\VSTO\10.0\VSTOInstaller.exe" /Uninstall "file:///C:/Test/ExcelTemplateTest.vsto" CMD /C EXIT /B 0
The CMD sets the errorlevel to 0, so the batch file will alway end successfull ...
You should then put this in the post build settings:
$(ProjectDir)"UninstallPlugin.bat"
You could also program this with C#
Cannot create Excel projects
- [ENG]: [http://stackoverflow.com/questions/13695526/why-cant-i-create-an-excel-vsto-workbook-project-in-visual-studio-2010/29037321#29037321 Stackoverflow|
- [GER]: Social MSDN
Most likely: You have an PERSONAL.xslb File in the XSLT start folder (see above posts).
Certificate Issues
Creating self made codesigning certificates
Be aware: this needs a Windows 2008 Server with a fully configured Certificaton Authority. You can download a Windows Server 2008 Eval, use the 180 day evaluation license and install it within a virtual machine environment - no need to do updates other stuff. If you are not familiar with such a routine then this could take you a whole workday! If this is not possible you have to buy a valid certificate from e. g. verisign.
Create your own PKF certificate
- PFX-Format (Personal Information Exchange), also known as PKCS #12
From here to there I look over the boarder and use Visual Studio 2013 to develop applications in C#. E. g. for Office VSTO Addins. I was confronted with the problem, that I could not start my own developed applications. Office merely refused to open and run the AddIn. To make a (very) long story short, this article saved my life:
- http://blogs.technet.com/b/deploymentguys/archive/2013/06/14/signing-windows-8-applications-using-an-internal-pki.aspx
- and https://wiki.cac.washington.edu/display/infra/Extracting+Certificate+and+Private+Key+Files+from+a+.pfx+File
Who is affected by the same problem can also follow this guide and use a valid certificate - which you have to buy:
- https://robindotnet.wordpress.com/2013/02/24/windows-8-and-clickonce-the-definitive-answer-2/
- https://robindotnet.wordpress.com/2013/04/14/windows-8-and-clickonce-the-definitive-answer-revisited/
I don't comment this behaviour of Windows in this case. Certainly it is good to have a strong certificate chain in a company. But hey microsoft, in some cases one simple just want to develop and share software in trusted environments without such a huge impact ;-) I am fulfilled with the believe, that MS sometimes thinks not only big, but practical.
When you successfully created your code signing certificate (.pfk) then put it on a secure place.
Create your public and private keys for signing
You have now to extract the public key of the certificate:
Create the public key (.snk file) for signing your assemblies with sn.exe. You can find the path to sn.exe on your lokal drive with
cd c:\ dir /b /s sn.exe
This could then look like this:
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\sn.exe" -p keypair.pfx key.snk
Now put the two files on an usb stick and go to the machine where you like to publish your software.
Install the certificate as a trusted publisher an mark it as non exportable!
Now you can sign your assemblies in Visual Studio with the key.snk.
Signtool
Thanks this article, I could solve a lot of problems.
You basically can find the path to signtool.exe searching within the MS Visual Studio installation directory:
cd C:\Program Files (x86) dir /s /b signtool.exe
which leads to:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe C:\Program Files (x86)\Windows Kits\8.0\bin\x64\signtool.exe C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe C:\Program Files (x86)\Windows Kits\8.1\bin\arm\signtool.exe C:\Program Files (x86)\Windows Kits\8.1\bin\x64\signtool.exe C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe
set MySignTool="C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe" set PathToKeyFilePfx= ... set ProjectDir= ... set TargetFileName= PATH_TO_DLL
"%MySignTool" sign /f %PathToKeyFilePfx%" /p MY_PASSWORD /v "%ProjectDir%\obj\Debug\%TargetFileName%"
Reset VS settings
- Devenv Command Line Switches: https://msdn.microsoft.com/en-us/library/xee0c8y7.aspx
- As admin: startmenu -> VS2013 -> VS-Tools -> Developer Command Prompt VS2103 (not native!)
devenv /resetuserdata devenv /setup
- As user: Open Developer Command Prompt VS2103 (not native!)
devenv /resetuserdata devenv /setup devenv /resetsettings