EvoPdf and Deployment Mode : Self-contained = Runtime Error - deployment

We're using EvoPDF in an NET6 C# MVC application to convert HTML to PDF files for display and emailing as attachments.
Using EvoPdf.HtmlToPdf.NetCore in our development environment works fine.
If we publish from Visual Studio using Deployment Mode = Framework-dependent then EvoPdf works ok.
If we publish from Visual Studio using Deployment Mode = Self-contained and run EvoPdf we get an error
Could not create image object. Could not load type 'System.StubHelpers.InterfaceMarshaler' from assembly 'System.Private.Corelib, Version=6.0.0.0, Culture=neutral, ....
As we'd rather have a self-contained install on our Live servers this is a major pain !
Any suggestions gratefully received.

I have same issue, you can try uncheck Trim unused code option in publish setting.
you can use dnspy load this dll & search InterfaceMarshaler check whether it exists in published dll, maybe it exists in debug folder but not exists in publish folder.
System.Private.CoreLib.dll take 10.4MB size in dotnet 7.0 shared directory.
You can simply copy dll from shared directory to publish directory.

Related

Building/deploying azure webjob with website copies source files instead of binaries/executable

I've added a webjobs sdk project to my existing website. The website runs as an azure app service. I've always done building and deployment by queueing up a new build in visual studio online and deploying from there to my azure website. Recently I created this webjob project in the same solution, that based on this webjobs-list.json generated and put in the website project should cause the webjob to also be deployed with the website during deployment (or so the documentation says). What is happening though is that when it deploys, and I take a look at what is in app_data\jobs\continuous, is not the binaries and executable that I expect, it's the actual source code/project files that have been copied into there. Obviously that isn't going to run, and it shouldn't have thrown source code out there on my website anyway.
I also had to change my release definition in visual studio online to just look for [my website project name].zip, instead of just *.zip, because otherwise I'd get an error from the release indicating: Error: More than one package matched with specified pattern. Please restrain the search patern.
...this appeared to be because the build process not only creates a zip file for my website, it also creates one for the webjobs project. From what I understand and have read, I am supposed to change my release to just look for the website zip file and ignore the other zip file, and just let that get deployed and it should all work fine, but again, what is copied into my jobs folder on the website isn't the binaries or executable for the webjob, it's the actual source files.
How can I get this to deploy just the binaries and executable with the site instead of the source files?
The only other thing I could find to do is remove the webjobs-list.json file from the web project so they are no longer linked together, which causes the build to no longer populate app_data\jobs\continuous with my web job project source files when deployed, and to create an additional task in my release definition to grab and deploy the other zip file that is created during the build (for the webjob project, and it contains the debug files with those binaries for whatever reason). However everything I read tells me that this is not supposed to have to be done, it should just work without me having to do this.
EDIT:
My web project is an MVC 5 project that I created with VS 2013. The web jobs project uses the 2.0.0.0 version of the webjobs sdk.
The build and release definitions, I followed the steps in this article to create:
https://www.visualstudio.com/en-us/docs/build/apps/cd/deploy-webdeploy-webapps
The only additional thing I did after following this article, is in my release definition, I changed the Package or Folder field to look for [my mvc web project name].zip, instead of *.zip, otherwise I'd get the error message noted above.

Ajax Controls Toolkit and Ajaxmin

I am learning how to use the Ajax Control Toolkit using VB.NET in code-behind in Visual Studio 10.0.40219.1 SP1Rel, .NET 4.0.30319 SP1Rel. I have been to many websites and tried lots of code, using the AnimationExtender. The sample that came with the toolkit works perfectly, but on
http://localhost:1049/
which is different from my "view code in browser" url:
http://localhost:4258/
When I change the url to mine, I get this error:
Could not load file or assembly 'AjaxMin, Version=4.97.4951.28478, Culture=neutral, PublicKeyToken=21ef50ce11b5d80f' or one of its dependencies. The system cannot find the file specified.
Nothing in the installation instructions mentions this. I can't run the page I'm using to learn how to use the AnimationExtender. I am at a loss, and I can't find anything like this on Google or here.
Thanks!
Matty's suggestion to check the sample project sent me back to the directory where I'd unzipped it, then checked the file AjaxControlToolkit.Binary.NET40.zip, which had the AjaxMin.dll file in it. I had admin move the file to C:\Program Files\Microsoft Visual Studio 10.0\VB\Bin (I don't know if that directory matters, it works for me), then in VS added the DLL as a reference to the project. The few errors I've gotten since are nothing to do with ajaxmin.
I had the same problem, I had to copy the file AjaxMin.dll from where I extracted the AjaxControlToolkit.Binary.NET40.zip, to my project's bin folder. i.e. C:\Users\MyUserName\Documents\Visual Studio 2010\Projects\MyProject\MyProject\bin
Rebuilt the solution and this time worked fine..
Hope that will help you :)

Upgrading to a newer version of Cocos2dx

I've been running cocos2dx version 1.0.1-x-0.11.0 till now and have a small project working fine. I need to upgrade to the latest version, cocos2d-2.0-x-2.0.4. What would be the correct way to do this? I don't want to
A. Mess up my project.
B. End up with 2 different versions of cocos2dx
Can I just download and replace the old cocos2dx folder with the new one? Any help appreciated.
Thanks.
Edit:
I actually downloaded the latest version and tried to set it up separately. I ran the build_win32.bat and after running for a while it opened the test application. Then I opened the vs2010.sln and tried adding a new project, but it throws include errors.
Error 3 error C1083: Cannot open include file: 'CCApplication.h': No such file or directory c:\cocos2d-2.0-x-2.0.4\chilra\classes\appdelegate.h 4 1 Chilra.win32
Error 2 error C1083: Cannot open include file: 'CCPlatformDefine.h': No such file or directory c:\cocos2d-2.0-x-2.0.4\cocos2dx\platform\ccplatformmacros.h 32 1 Chilra.win32
Error 1 error C1083: Cannot open include file: 'CCStdC.h': No such file or directory c:\cocos2d-2.0-x-2.0.4\chilra\win32\main.h 11 1 Chilra.win32
X:\CC2Dx (where my source is, unzipped the entire source file into this folder)
Open the cocs2d-Win32.sln. Run it in Debug mode and Release mode, You should find Debug.win32, Release.win32 folder inside your cocos2d-x
(Now here you can test, Make TestCpp as startupProject by RightClicking on the folder TestCpp ..then Run)
Now Run build_win32.bat (It will copy some files in to your Debug.win32 and Release.win32
This is where it created the solution, Debug.win32 & Release.win32.
After running build_win32.bat now either you can create your new project using VS 2008 template because Vs2012 has some script error I have solution for that also
But I suggest you to copy the HelloWorldProject and replace it with your files
Always Remember whenever you get some cocos2d file error like you have got in your above procedure then just copy those .lib file and .dll files from the Debug.win32 and Release.win32
and then run ......
This works fine
Any queries please feel free to ask
I've added cocos2dx to the upstream tracker for analysis and seems there some API/ABI changes made between 0.11.0 and 2.0.4: http://upstream.rosalinux.ru/versions/cocos2d-x.html
You can use japi-compliance-checker tool to generate such reports.

Is it possible to xcopy deploy the Microsoft ReportViewer web control?

I'm trying to setup Microsoft reporting on a shared hosted server. I've set up the web.config files with the necessary entries and uploaded the assemblies Microsoft.ReportViewer.Common.dll and Microsoft.ReportViewer.WebForms.dll as well as the file Microsoft.ReportViewer.xml via FTP.
The site loads OK, but when I try to load a report a get a missing reference to Microsoft.ReportViewer.ProcessingObjectModel.dll. If I can get a hold of a copy of this dll, can I expect the report view to work? If so, what's the best way to get a copy? Or should I start trying to cajole the server administrator to run ReportViewer.exe?
This project is using Visual Studio 2008.
It appears that the answer is yes. I had never extracted a file from the GAC before, but it was pretty easy by following the command line method described in this question. Once the correct version of Microsoft.ReportViewer.ProcessingObjectModel.dll was extracted from the GAC on my development machine and uploaded to the site, the reports started working.

Microsoft Robotics Studio and absolute path problems

I have just installed Microsoft Robotics Studio 2008 R2, and I must admit that I'm shocked to discover how paths are handled.
First of the studio wants to install itself into my personal profile (this is on Vista):
C:\Users\MyUserName\Microsoft Robotics Dev Studio 2008 R2
I assume this is because during development I have to write files to the robotics studio folder making C:\Program Files a no go.
Then when I create a new robotics project a lot of absolute paths pointing to the robotics studio is added to the project. If I check my project into source control and another developer checks it out onto his machine the absolute paths will not resolve and the project will not compile.
Also, since all services are collected into a single folder in the robotics studio folder developing multiple independent services on a single computer appears to be at least confusing.
Do you have any good strategies for handling this mess?
I have now figured out a way to change a Microsoft Robotics DSS Service visual studio project into something that you can compile and run in you own source tree independent of the installation path of the robotics studio. Here is a description of what you need to do to modify the project:
Add the robotics studio bin path to you PATH environment variable to be able to execute dssproxy.exe without supplying a full path. I have installed robotics studio into the program files folder to avoid accidentially writing files to the robotics studio folders.
Open the Properties page for the project and select the Build tab. In the Output section change the Output path to Debug\bin. For .NET projects it is customary to compile into folders bin\Debug and bin\Release but the robotics hosting service expects to live in a folder named bin and will store data in the folder above the bin folder.
Go to the Signing tab and select a new key in the Choose a strong name key file box. You can either generate your own key at that point or use the sn.exe utility to generate a new key. Or if you have your own policy for creating keys follow that. The sn.exe utility can be found in the tools folder of robotics studio.
In the Build Events tab edit Post-build event command line:
dssproxy.exe /dll:"$(TargetPath)" /proxyprojectpath:"$(ProjectDir)Proxy" /keyfile:"$(SolutionDir)Key.snk" $(ProxyDelaySign) $(CompactFrameworkProxyGen) /binpath:"." #(ReferencePath->'/referencepath:"%(RootDir)%(Directory) "', ' ')
Pay attention to the argument to /keyfile. Enter an expression that locates the strong name key file created in the previous step.
Copy the files DssHost.exe and DssHost.exe.config (or DssHost32.exe and DssHost32.exe.config for the 32 bit hosting service) from the robotics studio bin folder into the project folder and add these files to the project. Set the Build Action to Content and Copy to Output Directory to Copy if newer. Do the same for the manifest file for your service. Actually, the manifest file doesn't have to be in the same folder as the service, but copying it to the output folder enables you to do XCOPY deployment.
In the Debug tab change the Start external program to the DssHost.exe in the output folder of your project. You will have to build the project once to copy the file to the output folder. Clear the Working directory. Set the Command line arguments to
/p:50000 /t:50001 /m:DSSService1.manifest.xml
Change the manifest file name to the proper name in your project. You can modify the port numbers used either here or in the DssHost.exe.config file. If you are running in a protected Windows environment (UAC) you will have to use the httpreserve command to give yourself access to a particular port. You have to run this command as administrator.
Debug settings are not stored in the project file and each developer will have to create personal settings.
You should also update the Release configuration accordingly.
Since I was only interested in the CCR of MS Robotics, I just add these assemblies as a reference to any project I use it with and just be done with it.
This works without any problems. So if you are also only interested in the CCR and DSS part of the studio then this could be your solution
Reinier
we see this problem a lot. The absolute easiest solution is to specify the install directory when installing robotics studio to be "C:\program files\microsoft robotics studio". That way moving code between machines, checking out of source control, etc becomes a lot less problematic.
The other option is to use dssprojectmigration, which is included with RDS. Just run dssprojectmigration against your project directory, and it will correct all the hardcoded paths.