App passes WACK but fails store submission Certification - windows-store-apps

I am observing a strange situation where my app passes WACK on my computer, but submission to the store fails at Certification stage, due to unsupported APIs. I am using MSVC 15 Update 2.
Solution Consists of:
Universal APP
Class Library (Universal Windows)
Class Library (Portable)
EF Core RC2
Syncfusion SfChart.UWP.dll
Store Certification output:
Error Found: The supported APIs test detected the following errors:
API sysctl in libc.dll is not supported for this application type. Microsoft.Extensions.PlatformAbstractions.dll calls this API.
API uname in libc.dll is not supported for this application type. Microsoft.Extensions.PlatformAbstractions.dll calls this API.
API RtlGetVersion in ntdll.dll is not supported for this application type. Microsoft.Extensions.PlatformAbstractions.dll
calls this API.
As mentioned, no errors are spotted by WACK on my machine. I tried both WACK that comes with visual studio and WACK that's installed separately.
Could "Class Library (Portable)" cause this just by it's existence?
Update: It's not the portable class library, i removed it and still get the same certification failure.

This was caused by entityFrameworkCore.Tools. They are still pre-release and do not support .net native properly.
There is a workaround, but you can also simply remove it from the project before compiling it with .net native and submitting it to the store.

Are you expecting Microsoft.Extensions.PlatformAbstractions.dll to be included in your package? It's possible that this is getting included in the packages built into the .appxupload file, but not in the packages you build locally to test. I have seen some recent cases where the project is including references to dlls that are unnecessary in the package and are not compliant. You may want to investigate this angle and verify if this file is being included incorrectly.
One way to validate locally why you might be passing is to check the programinventory_*.xml file in %localappdata%\Microsoft\appcertkit, and see if you can find any references to Microsoft.Extensions.PlatformAbstractions.dll. If the file is not found when locally testing, then your best bet is to investigate your project and why it's getting including when you build the .appxupload file to submit to the store.

Related

WinRT: What happens when file is shared via file extension?

I'm recently looking into the file-sharing features of Windows Phone 8.1. One possibility is, to do this via file extensions. My question is, how exactly my app gets access to a launched file that it registered to handle.
I know that in WP8 this was done with a URI and a file token (https://msdn.microsoft.com/en-us/library/windows/apps/jj206987%28v=vs.105%29.aspx), but since the SharedStorageAccessManager class is not available anymore, I guess that it must be done different in 8.1.
So: What happens on "OS-level" in Win8.1/WP8.1 when an app is launched via a file extension, and how does the target-app actually get the launched file?
Thanks in Advance!
The app can register as a file handler in its Package.appxmanifest. Openthe manifest designer in Visual Studio, go to the Declarations tab, and add a File Type Associations declaration. You'll be prompted to fill out the details.
The app's Application.OnFileActivated method will be called with the launched StorageFiles in the FileActivatedEventArgs.Files property.
See How to handle file activation and the Association Launching sample for documentation and walkthroughs.
At a system level this all gets stored in the registry and when the launcher is called on a file the shell looks up the association then uses COM (or historically command line parameters or DDE) to launch or connect to the app registered for the file type. The details are hidden from Windows Runtime apps but are more directly exposed to desktop apps on Windows. See File type and URI associations model Implementing a Custom File Format

MissingManifestResourceException on Windows Phone 8.1 with .resx resources

I'm developing a Windows Phone 8.1 app that also targets Android(Xamarin)
As ever I added my string resources(.resx) on a PCL and referenced them on my launcher project to use it on my views, this all works fine on WP 8.1 silverlight but on the WinRt when I configure the project to release and run it on a device, for some reason I always get a MissingManifestResourceException. I've tried every solution for this problem out there without any success.
Note that on the emulator everything works fine, when the solution configurator is set to Debug it also works on both device and emulator. The only combination here is device and Release.
The app source code is on Github.
I was able to create a simple project to replicate this issue, basically it is a WP 8.1 app and a PCL project with the embedded resources, Download Link
Anyone has any ideas?
EDIT: After making some more testing I tried running an old Windows 8.1 app that I've done with the same localisation model and the same issue appeared so it seams to be a tool issue and not a configuration issue, since the Windows 8.1 app is on the market and everything went fine back there.
Our team ran into a similar issue which was tracked down to the runtime and not the PCL, WinRT component, or application package. That is, the resources exist within the PCL assembly, within the application package resources.pri file, but just cannot be found at runtime.
There is an active Microsoft Connect report here:
https://connect.microsoft.com/VisualStudio/feedback/details/991028/issue-using-resx-files-on-winrt-apps-windows-phone-and-windows
Our workaround was for the WinRT component to inject into each generated Resources class of each referenced PCL our own derived ResourceManager which redirected the call to the WinRT ResourceLoader instead. I've written a blog post that describes that workaround:
http://blogs.msdn.com/b/philliphoff/archive/2014/11/19/missingmanifestresourceexception-when-using-portable-class-libraries-in-winrt.aspx
I got to the bottom of this today. While bundling the app package, resources in dependencies that are not for a language being used by the app are stripped out. To prevent this from happening, add the following assembly-level attribute to your application.
using System.Resources;
[assembly: NeutralResourcesLanguage("en")]
I had the same behaviour. Today I created a new PCL Library (with another name) and copied the resx file to this project. I modified all references and everything just works fine in my WinRt (Windows Store) App now!
There was the string 'resources' in the portable class library name. Perhaps this was the problem!
I am able to reproduce this issue launching DVD sample and unfortunately in my project. I have an WP Silverlight 8.1 project registering a Windows Runtime Component Background Task and both of them using a Portable Class Library sharing some common localized strings as resources (.resx), among other things. The exception is thrown from Background Task when calling any property to get strings on generated .Design.cs class (only Release + Device).
In order to fix this I tried, without success, to use directly ResourceManager and/or to add .resx files directly into the Background Task.
I ended-up porting needed strings to .resw files and use the new "WinRT preferred" way via Windows.ApplicationModel.Resources.ResourceLoader in the Background Task project.
Seems to me that ResourceManager is not compatible with Windows Runtime anymore in release.
This is not necessary an answer, but is better than nothing since I do not have 50 reputation points for a comment.

Windows Phone 8.1 - DLL reference problems when using the camera

I'm trying to create a simple camera application according to the MSDN tutorial.
All I did was installing Visual Studio 2013 Update 3 and then created a new Visual C# \ Store-Apps \ Windows Phone-Apps \ Empty App Template and added the code to my MainPage.xaml.cs.
The first problem is, that it does not find the namespaces Microsoft.Xna.Framework.Media, System.IO.IsolatedStorage and Microsoft.Devices. According to the tutorial, I have to add the Xna DLL in the "Add references" .net Tab, but unfortunately, there is no .net tab. I only have the following categories:
-Assembly (All Assemblys are already references)
-Project
-Windows Phone 8.1 (only 5 DLLs, but different ones)
After a lot of searching, I found them in 'C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.1\Tools\AppDeploy\MdilXapCompilev8.0\Framework', but there is no System.IO.IsolatedStorage DLL.
When I ommit this using directive, I end up getting an error because it does not know this.Dispatcher.
Am I missing something? Do I have to install anything else?
The problem is probably that the link you have provided concerns WP8.1 Silverlight and you might have chosen WP8.1 Runtime project. Those are different API's - XNA is not supported in RunTime, you also won't find Microsoft.Devices there.
If you want to create your Camera App for WP8.1 Silverlight encure that you have chosen (Windows Phone Silverlight) template. Otherwise, of course you can also write Camera App but with different API - you may take a look here,also you may find something useful here at blog.

How can I use a console application with my website in Visual Studio?

Please read the following in the Visual Studio 2012 context:
I have two projects--one is a website (File --> New Website) and another is a console application (File --> New Project --> Windows --> Console Application). I am the author of the former.
The standalone app fakes the input by hardcoding it, runs through some code, and creates an output. It uses dlls from a local installation of software that I have installed on my machine to generate this output.
I read on MSDN that I cannot add a console app to a website solution in a useful manner. So, if I compile the console app to output a dll instead of an exe, can I reference that dll in my website? How can I do this exactly? I would need to pass the input value from the website to the dll, and return meaningful results from the dll. Is this possible?
Yes, you describe a feasible way to solve this. You need to create a class library project, add source code from console application to it, except the the class that has static Main method and modify (add to) that source code such that there is a class that you will be able instantiate from the code in your web application after you add the class library assembly to the web application as a reference. This class will have a method with appropriate parameters, that you will call. All this assuming that the task that console application code performs is fast and will not create noticeable delay in the web application response. If the task takes a long time, you will either have to run it in a background thread or move it outside the web application - the latter is significantly more involved.

Unable to load dll in Console or Web API project

I'm experiencing a rather strange problem.
I'm trying to interface with a Wacom signature pad, and would like to build a web service wrapper for the pad's API so that I can capture a signature on a website.
The signature pad requires two dll's to work: STUTablet.dll and STUTabletCore.dll.
I have a class library that references STUTablet.dll. Both dll files are in the class library's bin directory.
If I reference my class library from a Windows Forms application, I am able to call methods that call STUTablet.dll. However, if I reference my class library from a console application or an MVC application, an exception is thrown.
The exception is as follows: Unable to load DLL 'STUTabletCore.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E).
I have tried adding the same references that a default Windows Forms application has to my Console application, but to no avail.
Does anybody have any idea as to why STUTablet.dll is unable to load STUTabletCore.dll? There has to be some kind of dependency that I'm not fulfilling.
Thanks,
Francis :)
I had similar issues but eventually got help from Wacom UK support team and managed to get
a web based application to work on IE only with ActiveX.
Try
http://gsdt.wacom.eu/download/Signature-SDK.xml
Choose either 32 or 64 bit Signature SDK installer, plenty of SDK examples