GithubHelp home page GithubHelp logo

maartenba / googleanalyticstracker Goto Github PK

View Code? Open in Web Editor NEW
290.0 290.0 115.0 5.62 MB

GoogleAnalyticsTracker - A C# library for tracking Google Analytics

License: Microsoft Public License

C# 87.14% HTML 8.60% CSS 0.55% JavaScript 0.15% PowerShell 1.93% Shell 1.50% Batchfile 0.13%

googleanalyticstracker's Introduction


Hi there ๐Ÿ‘‹

My name is Maarten Balliauw (@maartenballiauw on X / @[email protected] on Mastodon).

Maarten Balliauw loves building web and cloud apps. His main interests are in .NET web technologies, C#, Microsoft Azure and application performance. He is Developer Advocate at JetBrains, creator of SpeakerTravel, and formerly founded MyGet. He's an ASP Insider and former Microsoft MVP. Maarten is a frequent speaker at various national and international events and organizes Azure User Group events in Belgium. In his free time, he brews his own beer. Maarten's blog can be found at https://blog.maartenballiauw.be.

๐Ÿ“™ Recent blog posts

โ“ Quick bits

๐Ÿ’ป Open Source

I try to contribute to various open source projects, when time allows. Here are some examples:

Feel free to reach out to me on Twitter: @maartenballiauw

googleanalyticstracker's People

Contributors

adamhwang avatar artfulhacker avatar azzlack avatar derigel23 avatar dersteve avatar ed-pavlov avatar efalsken avatar fameit-nl avatar gandarez avatar geertvanhorrik avatar joelmartinez avatar maartenba avatar marklagendijk avatar markvincze avatar mmetesreau avatar pmarflee avatar rolandh avatar scinfu avatar shaddix avatar sitereactor avatar vanillajonathan avatar xmedeko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

googleanalyticstracker's Issues

Fetch GA tracking Id and domain from web.config appsettings

I love the peace of mind this package introduces.

Since we work on various projects who have tons of commonalities, we enforce our own set of rules to ensure all of our apps comply with our design rules.

It would be perfect if GoogleAnalyticsTracker can use GA Tracking Id and Domain information from web.config incase they were ommitted as parameters in the Action Attribute. This way we can have a common base controller across all of our apps without worrying about how to change the values per each project. We already store those two values in web.config through appharbor's app setting configuration.

What do you think?

"Request is not available in this context" exception when using global filters

Hi

I'm using the following Nuget package:
package id="GoogleAnalyticsTracker" version="1.6.010" targetFramework="net45"

and as in the Examples usages:https://github.com/maartenba/GoogleAnalyticsTracker#example-usage

I have the following code:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new ActionTrackingAttribute("UA-227...", "....com");
}

When I start the project I get a "Request is not available in this context" exception

Any tought on this ? Seems like the HttpContext doesn't exists.

My environment: MVC4, .Net 4.0, VS 2012

Need to dispose WebResponse object in Tracker.RequestUrlAsync method

Hi,

Thanks for providing this useful library. I fixed a small problem that I discovered when trying this out in a little dummy forms app. I was creating and keeping hold of a tracker for the duration of the app to simulate a long session, using the base AnalyticsSession class.
I found I could only do two successful get requests to GA with the tracker. This turns out to be due to not disposing the WebResponse object in the Tracker.RequestUrlAsync method. I fixed the issue by adding a dispose of the object in a finally block in the end get response callback. You may have a better way to do this but this worked for me:

  .ContinueWith(task =>
   {
       try
       {
         var returnValue = new TrackingResult { Url = url, Parameters = parameters, Success = true };
         if( task.IsFaulted && task.Exception != null && ThrowOnErrors )
         {
           throw task.Exception;
         }
         else if( task.IsFaulted )
         {
           returnValue.Success = false;
           returnValue.Exception = task.Exception;
         }
         return returnValue;
       }
       finally
       {
         // Ensure we dispose the WebResponse
         if( task.Result != null )
         {
           ( (IDisposable) task.Result ).Dispose();
         }
       }
   });

Session support

Hi there, love your project!

However, I can't seem to get sessions to work, so when a single user triggers several .TrackPageView(), GA think it comes from several different users. Is there a way to get around this issue? :)

I've tried to add this without having any effect:
AnalyticsSession sess = new AnalyticsSession();
sess.GenerateSessionId();
sess.GenerateCookieValue();
tracker.AnalyticsSession = sess;

Getting "RunSynchronously may not be called on a continuation task" windows phone 8 app

I have create a property in the App.xaml.cs for a single

    private static Tracker _GAtracker;
    public static Tracker GATracker
    {
        get
        {
            if (_GAtracker == null)
            {
                _GAtracker = new Tracker("UA-xxxxxx-x", string.Empty);
            }
            return _GAtracker;
        }
    }

I then use the following on each page in the onNavigatedTo

        App.GATracker.TrackPageView("Home page", e.Uri.ToString());

However I am getting the following error:

System.InvalidOperationException was unhandled
HResult=-2146233079
Message=RunSynchronously may not be called on a continuation task.
Source=mscorlib
StackTrace:
at System.Threading.Tasks.Task.InternalRunSynchronously(TaskScheduler scheduler, Boolean waitForCompletion)
at System.Threading.Tasks.Task.RunSynchronously()
at GoogleAnalyticsTracker.Tracker.RunSynchronous(Task task)
InnerException:

Any ideas? Going to look at source code now to see where this is occurring!
Thanks
Nicholas

Upgrade to Universal Analytics?

Nice and easy to use apis. Is there a plan (or another package available) to enable universal analytics functionality, in particular custom dimensions?

Thanks!

Receiving System.Net.WebException warning messages

Thanks for implementing Google Analytics for Windows 8 RT.
My program throws 'System.Net.WebException' warning messages when I debugged it on a Windows tablet, but I don't receive any warning message if I was debugging on the simulator or local machine.

An exception of type 'System.Net.WebException' occurred in System.dll and wasn't handled before a managed/native boundary
An exception of type 'System.Net.WebException' occurred in mscorlib.dll and wasn't handled before a managed/native boundary

Should I handle Certificate Policy myself?
ps: I set

Tracker.UseSsl = true

Thanks

No AddItem or AddTransaction for ECommerce Tracking

Is this omission intentional? Or are these functions typically implemented on the client and the GA server remembers them for the session and waits for submission from a server?

PS: Thanks for an awesome library.

custom beacon arguments

Hey,

Looking at the source there's no easy way to add custom arguments to the tracker beacon.

e.g.
utmsr=1280ร—1024 โ€“ Screen resolution
utmsc=24-bit โ€“ Screen color depth

You have a good solution for this? or should I come up with something and send a PR ?

TrackPageView on WP8 with no internet connection stops app

When not having an internet connection on a WP8, a call to Tracker.TrackPageView stops the complete execution, since the request never comes back in the WebRequestExtensions.GetResponse method.

Shouldn't it be async anyway? Is there a reason, why it is not there yet? Lack of time? If yes, I'll add it.

.NET Framework 2.0

Hi,

As mentioned I would prefer a .NET framework 2-version of this awesome project.. :)
While trying to compile it, I've narrowed it down to 25 errors I have issues to resolve:

The following namespaces can't be found:

  • ResultExecutedContext
  • HttpContextBase
  • HttpContextWrapper
  • Func
  • ActionFilterAttribute
  • ActionExecutingContext

Any idea what I can replace them with? :)

Default WinRT analytics session class

using Windows.Foundation.Collections;

namespace GoogleAnalyticsTracker
{
class WinRTAnalyticsSession
: AnalyticsSession
{
private const string StorageKeyUniqueId = "GoogleAnalytics.UniqueID";
private const string StorageKeyFirstVisitTime = "GoogleAnalytics.FirstVisitTime";
private const string StorageKeyPreviousVisitTime = "GoogleAnalytics.PrevVisitTime";
private const string StorageKeySessionCount = "GoogleAnalytics.SessionCount";

    private readonly IPropertySet _settings = Windows.Storage.ApplicationData.Current.LocalSettings.Values;

    protected override string GetUniqueVisitorId()
    {
        if (!_settings.ContainsKey(StorageKeyUniqueId))
        {
            _settings.Add(StorageKeyUniqueId, base.GetUniqueVisitorId());
        }
        return (string)_settings[StorageKeyUniqueId];
    }

    protected override int GetFirstVisitTime()
    {
        if (!_settings.ContainsKey(StorageKeyFirstVisitTime))
        {
            _settings.Add(StorageKeyFirstVisitTime, base.GetFirstVisitTime());
        }
        return (int)_settings[StorageKeyFirstVisitTime];
    }

    protected override int GetPreviousVisitTime()
    {
        if (!_settings.ContainsKey(StorageKeyPreviousVisitTime))
        {
            _settings.Add(StorageKeyPreviousVisitTime, base.GetPreviousVisitTime());
        }

        var previousVisitTime = (int)_settings[StorageKeyPreviousVisitTime];
        _settings[StorageKeyPreviousVisitTime] = GetCurrentVisitTime();
        return previousVisitTime;
    }

    protected override int GetSessionCount()
    {
        if (!_settings.ContainsKey(StorageKeySessionCount))
        {
            _settings.Add(StorageKeySessionCount, base.GetPreviousVisitTime());
        }
        var sessionCount = (int)_settings[StorageKeySessionCount];
        _settings[StorageKeySessionCount] = sessionCount++;
        return sessionCount;
    }
}

}

Downgrade project to .NET 3.5

Hi,

I'm working on downgrading this great project to .Net framework 3.5 since I can't upgrade my project to 4.0 just yet. I've used http://www.nuget.org/packages/TaskParallelLibrary and System.web.mvc and Abstractions to get rid of most of the errors. However, I have one error left that I'm not able to resolve.

The RegisterGlobalFilter-function uses GlobalFilters.Filters.Add(). Is there anything like this for 3.5 or a way to rewrite this? Thank you for this great project. :)

Custom Variables lost or merged in GoogleAnalytics

When sending multiple GA events with custom variables closely together, GA seems to lose or merge the custom variables. Usually the custom variable reported in GA is the last one sent.

In other words, my test account will show:

0testCategory, 0testAction, 0testLabel, appId = 2test
1testCategory, 1testAction, 1testLabel, appId = 2test
2testCategory, 2testAction, 2testLabel, appId = 2test

Here's my test code:

private static void GoogleAnalyticsTrackerTest()
{
    var tasks = new List<Task<TrackingResult>>();

    for (Int32 n = 0; n < 3; n++)
    {
        tasks.Add(Program.TrackEvent(n.ToString(), String.Empty));
    }

    Task.WaitAll(tasks.Cast<Task>().ToArray());
}

private static Task<TrackingResult> TrackEvent(String prefix, String suffix)
{
    using (var tracker = new Tracker(trackingAccount, trackingDomain))
    {
        tracker.SetCustomVariable(
            position: 1,
            name: "appId",
            value: prefix + "test" + suffix,
            scope: 1
        );

        return tracker.TrackEventAsync(
            category: prefix + "testCategory" + suffix,
            action: prefix + "testAction" + suffix,
            label: prefix + "testLabel" + suffix,
            value: 0
        );
    }
}

Portable Class Library version

Portable Class Libraries can be referenced from WP7, WP8, and WinRT (along with .NET 4 I believe). If you refactored GoogleAnalyticsTracker into a PCL then you could just have one version. I'm not sure what dependencies you have that might make this not possible, but it's worth looking into I think. I would love to be able to reference GAT in my PCL that I share across my WP and WinRT apps.

Tracker.TrackPageView is wrong

It tracks host name of client, but should track host name of request.
Also, it tracks absolute url, but should track relative url (in host recorded above).

Network Connections issue

Hi, we have following issue when using this lib: after some times we have a big amount of unclosed connections (see attachments) which goes to 74.125.239.35:80 (google).
Here is our code:
using (var tracker = new Tracker("UA-XXXXXXXX-XX", "xxx.com"))
{
var url = "http://" + domain;
await tracker.TrackEventAsync(domain,
"Site Impression",
id,
exists ? 1 : 0,
nonInteraction: true,
beaconParameters: new Dictionary<string, string>() { { BeaconParameter.Browser.ReferralUrl, url }, { BeaconParameter.PageUrl, url }, { BeaconParameter.HostName, domain } });
}

perform
connections

WinRT issue

GoogleAnalyticsTracker does not track windows store apps.
I am using VS 2012. If I try to install it using nuGet, it fails there also.
So, I downloaded the project from GitHub, build the solution and referred the assembly in my windows store app.

I added the following code for tracking

private async Task TrackView(IView view)
{
using (Tracker tracker = new Tracker("UA-XXXXXXXX-2", "none", new WinRtAnalyticsSession()))
{
await tracker.TrackEventAsync("Analytics", "Test", "", default(int));
return await tracker.TrackPageViewAsync(view.ViewModel.ViewTitle, view.ViewModel.ViewTitle);
}
}
But this does not work.
Am I missing any other setting ?

Replace Microsoft Bcl dependency with ASyncBridge

Hi,

I've tried to install this from NuGet and it doesn't work out of the box. It gives compilation error something like Unable to resolve 'GoogleAnalyticsTracker'. After few ours of trial and errors, the problem turned out because my project is .net 4.0 and I must reference Microsoft ASync explicitly.

After that it compiles, Even after my project compiles, ClickOnce doesn't include System.Threading.Task and System.Runtime as output because of the bug causing another mysterious bug after ClickOnce deployment. FYI, Microsoft Bcl won't work out of the box on Windows XP too (without installing MS bug fix).

So, I did pull GoogleAnalyticTracker source code, and remove Microsoft Bcl dependency and use https://www.nuget.org/packages/AsyncBridge/ instead for .net 4.0. Everything suddenly works like magic (even on Windows XP).

Would that be possible to update the project to link against ASyncBridge instead of Microsoft Bcl? In my case, there's no need to source code changes, only project reference as this might save few hours of other people who use this package.

Thanks

Exception details no longer visible

When I add the actiontrackingattribute to my webapiconfig I no longer get exception details when an exception occurs on one of my endpoints.

Exception without actiontrackingattribute

{
message: "An error has occurred."
exceptionMessage: "Service unavailable"
exceptionType: "System.ServiceModel.FaultException"
stackTrace: "~full stack trace~"
}

Exception with actiontrackingattribute

{
message: "An error has occurred."
exceptionMessage: "After calling AuditFilterAttribute.OnActionExecuted, the HttpActionExecutedContext properties Result and Exception were both null. At least one of these values must be non-null. To provide a new response, please set the Result object; to indicate an error, please throw an exception."
exceptionType: "System.InvalidOperationException"
stackTrace: " at System.Web.Http.Filters.ActionFilterAttribute.CallOnActionExecuted(HttpActionContext actionContext, HttpResponseMessage response, Exception exception) at System.Web.Http.Filters.ActionFilterAttribute.<>c__DisplayClass2.<System.Web.Http.Filters.IActionFilter.ExecuteActionFilterAsync>b__0(HttpResponseMessage response) at System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass41`2.<Then>b__40(Task`1 t) at System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass45`2.<ThenImplContinuation>b__44(Object state)"
}

Do I need to specify the actiontracking attribute in a different way? This is the abbreviated code I'm using:

public static void Register(HttpConfiguration config)
{
        // extra code removed
        config.Filters.Add(new ActionTrackingAttribute("Key","Url");
}

packages.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="AsyncBridge.Portable" version="0.2.0" targetFramework="net45" />
  <package id="GoogleAnalyticsTracker.Core" version="2.2.3" targetFramework="net45" />
  <package id="GoogleAnalyticsTracker.WebAPI" version="2.2.3" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Core" version="4.0.30506.0" targetFramework="net45" />
</packages>

Dependency hell...

All of these new dependencys really makes using this package miserable to use.. I absolutely hate what you have done to v2.

Nuget package for Windows Phone

When I tried to install the nuget package in a WP project it threw an error. Is the package not available for on nuget for WP?

How to set Full Referrer

Is it really to set Full Referrer when sending event from controller? At mine reports I see it 's just says: (direct) (same for Source)
Thanks

Unit tests?

Any opinions/thoughts/ideas on adding unit tests to this project?

Namespace issue with WP8

While implementing the tracker in AdRotator (which we use reflection so there is not a hard dependency) we noted a namespace difference with WP8

With WinRT and WP7, the tracker class is found by

GoogleAnalyticsTracker.Tracker

However on WP8 it is different, as it is discovered by:

GoogleAnalyticsTracker.WP8.Tracker

Any chance this can be unified to either all be different or preferably all the same?

GA shows one visitor only

Hi there

I have set up a new homepage using your nuget package in an mvc4 webapp. Since then my GA stats are showing only and exactly one visitor - it seems to me that my server is being tracked?!

I am using the library according to the sample:

filters.Add(new ActionTrackingAttribute("UA-X", "MySite.net", IsTrackableAction));

I was expecting that the library is able to get the client information, keep track of returning visitors by cookies etc. Am I missing something here?

Thanks & kind regards
Sandro

The remote server returned an error: NotFound - Exception on WP when closing app

I use GAT in my Windows Phone app. When I close the app, sometimes it throws a "The remote server returned an error: NotFound." Exception with the following stacktrace:

at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at GoogleAnalyticsTracker.Tracker.<>c__DisplayClass3.b__2(IAsyncResult result)
at System.Threading.Tasks.TaskFactory1.InnerInvoke(TaskCompletionSource1 tcs, Func`2 endMethod, IAsyncResult l)

Async request

Nice project. What about doing the webrequest to analytics async so response is not held up?

Track Actual MVC Action Url

Hello,

On Wiki there is the following:

[ActionTracking("UA-XXXXXX-XX", "www.example.org")]

Is it necessery to specify the URL, e.g., "www.example.org"?

How can I do to simply send the actual URL of rendered for that action?

Thank you,
Mkguel

Exception in MTAThread application in ConstructUserAgent()

[MTAThread]
static void Main(string[] args)
{
var tracker = GoogleAnalytics.EasyTracker.GetTracker();//GoogleAnalytics.AnalyticsEngine.Current.GetTracker("UA-XXXXXXXX-1");
tracker.SendView("test view RT");
}

Result:
Activating a single-threaded class from MTA is not supported (Exception from HRESULT: 0x8000001D)

Source:
\GoogleAnalytics.Common\GAServiceManager.cs Line 258
var hasTouch = Windows.Devices.Input.PointerDevice.GetPointerDevices().Any(p => p.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Touch);

Probably Solution:

Windows.Devices.Input.TouchCapabilities tc = new Windows.Devices.Input.TouchCapabilities();
var hasTouch = tc.TouchPresent > 0;

Object reference not set to an instance of an object.

I followed the documentation and replaced the xxxx-xx and tracking domain name with my own for a mvc 4 project. I got the exceptions as shown below.

It seems the cause of the problem is that the variable IsTrackableAction is null.

[ActionTracking("UA-XXXXXX-XX", "www.example.org")]
public class HomeController : Controller
{
public ActionResult Index()
{
...

Generates exception:

[NullReferenceException: Object reference not set to an instance of an object.]
GoogleAnalyticsTracker.Web.Mvc.ActionTrackingAttribute.OnActionExecuting(ActionExecutingContext filterContext) +66
System.Web.Mvc.Async.AsyncControllerActionInvoker.InvokeActionMethodFilterAsynchronously(IActionFilter filter, ActionExecutingContext preContext, Func1 nextInChain) +69 System.Web.Mvc.Async.<>c__DisplayClass3b.<BeginInvokeActionMethodWithFilters>b__35() +21 System.Web.Mvc.Async.AsyncControllerActionInvoker.InvokeActionMethodFilterAsynchronously(IActionFilter filter, ActionExecutingContext preContext, Func1 nextInChain) +489

GetUniqueVisitorId returns null

CookieBasedAnalyticsSession.GetUniqueVisitorId returns null when GoogleAnalyticsTracker is used as a Filter.

This prevents Google Analytics from reporting a hit.

Request is not available in this context

I think I saw someone comment about this in a previous version but thought it was remedied. I downloaded v1.8 of the GoogleAnalyticsTracker and attempted to add a controller level attribute for tracking. When I attempt to run the project, I get the below error. If I remove the GoogleAnalyticsTracker, the error goes away.

Request is not available in this context

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Request is not available in this context

Source Error:

Line 17: AreaRegistration.RegisterAllAreas();
Line 18: DeviceConfig.RegisterDevices(DisplayModeProvider.Instance.Modes);
Line 19: GlobalConfiguration.Configure(WebApiConfig.Register);
Line 20: FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
Line 21: RouteConfig.RegisterRoutes(RouteTable.Routes);

Source File: c:\AC\PlayoffFootballMVC5\PlayoffFootballMVC\Global.asax.cs Line: 19

Stack Trace:

[HttpException (0x80004005): Request is not available in this context]
System.Web.HttpContext.get_Request() +9778420
GoogleAnalyticsTracker.Web.Mvc.ActionTrackingAttribute..ctor(String trackingAccount, String trackingDomain, String actionDescription, String actionUrl) +101
GoogleAnalyticsTracker.Web.Mvc.ActionTrackingAttribute..ctor(String trackingAccount) +43
System.Reflection.CustomAttribute._CreateCaObject(RuntimeModule pModule, IRuntimeMethodInfo pCtor, Byte** ppBlob, Byte* pEndBlob, Int32* pcNamedArgs) +0

Allow for 'awaiting' Tracker methods

Consider providing async Task overloads for TrackEvent, TrackTransaction, and TrackPageView. I am using this library in an WinRT background task which will exit before the Tracker method completes unless I await the completion.

Thanks!
Scott

"Value" does not get sent up when tracking an event.

The "value" part of the utme queyr string parameter is always "3", supposedly because the format string generating the parameter value lacks the curly braces for the fourth format parameter (the 140th line of the Tracker.cs file).

Upgrade to v3 causes compilation errors

Upgrading to V3 causes weird compilation errors:

Error   60  The type 'System.Collections.Generic.Dictionary`2<T0,T1>' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.   C:\Users\Remco\documents\visual studio 2013\Projects\HearthCap\HearthCap\Features\Analytics\Tracker.cs  103 13  HearthCap
Error   61  The best overloaded method match for 'GoogleAnalyticsTracker.Core.TrackerBase.TrackPageViewAsync(string, string, System.Collections.Generic.Dictionary`2<string,string>, string)' has some invalid arguments    C:\Users\Remco\documents\visual studio 2013\Projects\HearthCap\HearthCap\Features\Analytics\Tracker.cs  109 19  HearthCap
Error   62  Argument 3: cannot convert from 'System.Collections.Generic.Dictionary<string,string>' to 'System.Collections.Generic.Dictionary`2<string,string>'  C:\Users\Remco\documents\visual studio 2013\Projects\HearthCap\HearthCap\Features\Analytics\Tracker.cs  109 75  HearthCap
Error   64  The best overloaded method match for 'GoogleAnalyticsTracker.Core.TrackerBase.TrackEventAsync(string, string, string, int, bool, System.Collections.Generic.Dictionary`2<string,string>, string)' has some invalid arguments    C:\Users\Remco\documents\visual studio 2013\Projects\HearthCap\HearthCap\Features\Analytics\Tracker.cs  115 19  HearthCap
Error   65  Argument 6: cannot convert from 'System.Collections.Generic.Dictionary<string,string>' to 'System.Collections.Generic.Dictionary`2<string,string>'  C:\Users\Remco\documents\visual studio 2013\Projects\HearthCap\HearthCap\Features\Analytics\Tracker.cs  115 83  HearthCap

Possibly, this has something to do with: http://support.microsoft.com/kb/2962547

I tried the work-around described there and did not work. I tried uninstalling .net 4.5.2. Also did not work.

I am NOT targeting 4.5.1 or 4.5.2 (only 4.5).

Any idea?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.