Any changes needed to Visual Basic PCL for Xamarin Unified API? - vb.net

I have a Visual Basic PCL for Xamarin. Will I need to make any changes to the PCL to be able to use it in a Xamarin Unified API project? Or just recompile perhaps?
I read that Visual Basic code requires no changes for 64 bits unless you are using the fact that it's 64 bits, which I am not.

You don't need to do any changes to PCL projects. The only projects who needs updating is iOS and Mac. For more information on updating that see the documentation: http://developer.xamarin.com/guides/cross-platform/macios/updating_ios_apps/

Related

VBA code: User is not a member of HelloWorld.My

I'm not new to programming, but am new to Microsoft-centric technologies. In this case, I have downloaded Visual Studio 2019 Community edition and am trying to get some stuff working as a VBA Console application.
Here is the link the the Visual Basic Guide I am using as documentation:
https://opdhsblobprod02.blob.core.windows.net/contents/c6aea4f5457448ee818b7292ba695982/8f8c9552565899a6bd5ea3443dc48752?sv=2015-04-05&sr=b&sig=z6HVPKMrsWrYMl1xp9Pk34R040%2B8A71q3nmRLNTG6lk%3D&st=2019-10-18T21%3A16%3A48Z&se=2019-10-19T21%3A26%3A48Z&sp=r
On Page #1 of that guide is a section titled "Development with My". 'My' can have various pieces, depending on the project type. In this case, my project type is: Console Application (from VS, File -> New -> Project, select: Console App (.NET Core) )
On page 59 of that guide is a table that explicitly shows which different parts of 'My' would be available in different project types. For a Console App, all of My.User, My.Resources, My.Setting should be available (as well as some other things).
Yet within my VBA code, the editor implies that the only part of 'My' available is a My.InternalXmlHelper. (I guess that comes by default - I haven't done anything to explicitly try to add such a thing.)
Obviously, some piece of the puzzle is missing here that enables access to all this wonder 'My' functionality that is described. Anybody know what needs to be done here so that my VS environment knows about My.User (and other stuff)?
Thanks.
.NET Core is a different beast altogether, in addition to the other languages you seem to be mixing together.
Based on this link, VB My namespace support is not a part of core 3.0. I'm not sure if it's in earlier core versions, because I haven't been working with VB in Core.
A large part of what makes Visual Basic special is the Visual Basic Runtime. .NET Core 2 contains only the small part of Visual Basic Runtime that is defined in the Visual Basic Language Specification which was initially designed for interop with phones.
The major effort for Visual Basic 16.0 will be moving the Visual Basic Runtime to .NET Core 3.0 to provide expected features like Mid or the My namespace. This work will probably not be ready for the first preview of .NET Core 3.0 but will appear in a later preview.
I think the guide you are working with is for .NET Framework 4.x and earlier (Core is a different initiative that involves getting .NET to run on multiple Operating Systems, etc.). Try creating a new .NET Framework app. The templates will have (.NET Framework) in the name, e.g., ASP.NET Web Application (.NET Framework).

Can I use FileHelpers with Xamarin

I would like to use FileHelpers in a Visual Studio 2017 project that compiles code for Android, is this possible?
Yes. FileHelpers works fine with Xamarin.
Furthermore, you can use the FileHelpers library in a .NET standard 2.0 project which is the recommended way for Xamarin applications to share code across multiple projects - one assembly used by both Android and iOS projects. See the documentation here.

Is .NET Native required for UWP applications?

I am upgrading a Win8 application to UWP. .NET Native is causing a huge amount of issues, and a lot of WCF features that the application uses aren't supported.
Is .NET Native required for UWP applications? Can I just disable .NET Native in the Release build? Apart from some potential .NET Native performance improvements, will I lose anything?
The point is you are migrating to the .NETCore for the UWP, the subset of the .net framework, that leads to lots of your original codes can't fit into.
Are you migrating from a winRT store application or full .net framework based desktop app?
So far as I know the .NET CORE really cut-off lots of stuff from the Full. So if migrating from a Full .net desktop, that's really suffer.
.NET is supposed to increase performance, however it may create serious troubles, in some cases, e.g. if application extensively uses marshalling.
You can disable .NET native for Release in project properties.
Open Project Properties and select Build tab.
Set
Configuration: Release
Platform: All platforms
Untick box 'Compile with .NET native tool chain'
After you build the project, allow to run Certification Kit (WACK), and if is passes, take my congratulations. (I am not that lucky!)

Can I use my own DLLs with my Xamarin iOS and Android projects?

Can I use my own DLLs with a Xamarin iOS or Android project?
The reason I'm asking is because I want to compile dlls from Clojure CLR, and use them with my Xamarin mobile projects.
Currently the answer for this is 'No' - you cannot use your own existing assemblies but must instead recompile those projects as Xamarin.iOS or Xamarin.Android (MonoTouch or MonoDroid) libraries.
This is because the Xamarin twins are based on old Silverlight profile code and not on full .Net.
This situation is changing currently - Xamarin is rebasing on Mono3/.Net4.5 and Xamarin is working towards PCL support.
However, even with these recent changes I think it is still advisable to rebuild your assemblies for the specific platforms at this time.

Choosing Windows Runtime Components versus Portable Code Library

When sharing code between Windows Phone 8 and Windows 8, the two core options for developers are 1) Windows Runtime Components and 2) Portal Class Libraries.
Windows Runtime Components use WinRT and can be projected into all the supported languages. They require linked files in separate projects (binaries) when used on different platforms. They, however, share 90% of the available WinRT APIs.
Portable Class Libraries are a subset (sometimes a significant subset) of the BCL that has binary compatibility across platforms. They can be used on WinRT applications but also on other project types like Silverlight, Xbox, etc.
When a developer is choosing a "sharing strategy" which project type is the go-to technique to do the best job sharing code between Windows Phone 8 and Windows 8? Thanks.
It depends what form of sharing you need:
1) If you have a common C++ business logic layer you can use Windows Runtime (WinRT) components to expose this to both Windows Phone and Windows Store app (that's the only use-case for Windows Phone as you can't write a WP8 app using JavaScript or use .NET to author a WinRT component).
You'd have to build two separate WinRT components however, one for Phone and one for Windows Store. It should be possible to share the C++/CX code of your WinRT interop layer using preprocessor directives (#if) to mark the platform specific code.
2) You have business logic in C#/VB that only has dependencies on the .NET APIs which are available in a Portable Class Library. Then you can use Portable Class Library (PCL) to contain that logic. Basically if you can build your library into a PCL DLL then this should work. You can then reference this PCL in binary form in both Windows Phone and Windows Store app.
However as Martin has said you need to take care when using 3rd party libraries as these will also need to be built for PCL. Some 3rd party libraries are already available in PCL form (JSON.NET for example).
3) You want to share code for that has platform API dependencies (or 3rd party library dependencies) which are not supported by PCL. Then you'd need to create separate DLL libraries, one per platform. You can avoid code duplication using linked C#/VB source files and use a build flag (#if again) to allow small code changes between your target platforms.
If you want to share code between Windows Phone 8 and Windows 8, then you cannot use Windows Runtime Components, because there are different components used for Windows 8 and different for Windows Phone 8 and they are not interchangeable.
I would go for either Portable Class Libraries for some simple generic libraries, or for code sharing via links and #if WP8 compilation directives - this just works and is more powerful than Portable libs.
Keep also in mind that most external libraries like MVVM Light cannot be referenced in Portable Libs, so if you want to use them, you have to use the code sharing via file references.
For some guidance on how to effectively use Portable Class Libraries to share code between platforms, see this blog post: How to Make Portable Class Libraries Work for You
This question is no longer relevant with the introduction of Windows
Phone 8.1 Universal Apps in Visual Studio 2013 Update 2 which supports
Shared Projects.
Wait a moment, as for me even in Visual Studio 2013 Update 4 this question is still relevant because there are two types of projects there:
Class Library (Portable for Universal Apps) - PCL
and
Windows Runtime Component (Portable for Universal Apps) - WinMD
I can see only one big difference between them:
WinMD uses only WinRT and PCL could be used also with .Net and Silverlight. But I also want to know more about which one and when better to choose.