Found 17 packages
ConfigureAwait(true) and ConfigureAwait(false) are very important when dealing with asynchronous code. However, they make code hard to read and easy to fail. ObviousAwait introduces two aliases: KeepContext() and FreeContext(), reducing the cognitive load while reading and writing asynchronous code.
DOM-less simple JavaScript testing framework.
A simple library to make Business Rules obvious as opposed to hidden in obscure lines of code.
Fork of Extended.Wpf.Toolkit that provides some minor/obvious bug fixes. This package becomes obsolete, once the bugfix is included in the official repo/nuget.
A TreeView control for ASP.NET MVC having following major features: 1. Many-to-Many relations handlers for Hierarchical data. (Along with obvious support for One-to-One and One-to-Many relational data) 2. Multiple selection of tree nodes 3. No limit in number of tree levels. 4. Different styling for each levels in TreeView 5. Submission/ Postback of IDs of selected nodes while the page/ view is submitted.
Use this addin to unseal sealed types. The most obvious usage of this is when working with F# records and an ORM like Entity Framework or NHibernate. Or if you want to create a dynamic proxy. All of the previously listed scenarios require you in some cases to have an object can be proxied, requiring virtual properties which aren't possible when a type is sealed.
Provides the basis for implementing the Ambient Context pattern. Includes a Clock implementation based on it. The Ambient Context pattern is an Inversion of Control (IoC) pattern that provides static access to a dependency while controlling the dependency from the outside. The pattern optimizes code reachability at the cost of reduced transparency, making it suitable for obvious, ubiquitous, rarely-changing dependencies. For example, an entity's constructor can access Clock.UtcNow, avoiding the need to inject the creation datetime or a dependency, at the cost of hiding the fact that a unit test could control the timestamp from the outside. An example from .NET is System.Transactions.TransactionScope. Any code (such as the database connector) can access the static Transaction.Current, yet outer code in the current execution flow controls it, through TransactionScopes. https://github.com/TheArchitectDev/Architect.AmbientContexts Release notes: 2.0.1: - Updated dependencies to the latest versions and removed some unused dependencies. 2.0.0: - BREAKING: ClockScope no longer has a configurable default scope. (See also next item). - BREAKING: Removed explicit support for "configured default scopes", i.e. scopes configured on startup. They posed too many concurrency risks, such as in test runs. (Default scopes without any configuration are still supported.) - BREAKING: Removed the RemoveAmbientScope() method. Deactivate() should be used instead. - Added support for netstandard2.0. - ClockScope's constructor now prefers UTC datetimes, to avoid lossy conversions (due to DST). - ClockScope now exposes a convenience constructor that takes a DateTime instead of a Func<DateTime>. 1.1.1: - Manually disposing scopes from a deeper async level (such as a DisposeAsync() method with the async keyword) now properly affects methods up the call stack and no longer breaks scope nesting. - Improved the protections against race conditions. - Parent properties are no longer unset on disposal (although implementations should not rely on this detail). - Performance improvement: A scope now avoids even instantiating its AsyncLocal as long as only its default scope is used, as is common in production for certain scopes. - Performance improvement: The JIT can now inline more code, since exceptions have been moved into helper methods. 1.1.0: - Introduced non-generic AmbientScope base class. - Performance improvement: A scope now avoids touching its AsyncLocal as long as only its default scope is used, as is common in production for certain scopes.
Stores application settings in TOML (Tom's Obvious Minimal Language) format. Provides a clean, human-friendly configuration format with support for tables, arrays, dates, and nested structures. Popular choice for modern applications and developer tools. Includes multi-process safety with file locking.
SharpBITS.NET is a .NET wrapper of the BITS API and a little Windows UI application for easier access to BITS up- and downloads. It's developed in C# (obviously), but the base wrapper can be used from any .NET application.
Working with large Excel files is problematic. After reading an article by Joel Spolsky which advocated using Excel to work with Excel files because nobody else has put in everything necessary to optimize the experience like the real thing, I decided to try it out. It turns out that the Excel automation object is difficult to work with, but does some amazing things. It was able to copy/paste columns of data in huge files (200K rows) around fast while not spiking memory at all. The same operation using EPPlus brought the server down. Relative to running on the server, there are some caveats (http://tinyurl.com/ookezz3), but I believe if you test a process and it works, it will be fine. You can't run Excel automation under a service and do just anything. This package has never actually been in production, but has gone through a fair amount of testing - the main concern always being whether it's leaving the automation object behind (it seems to clean up consistently). There is the obvious dependency on Excel being installed on the machine where executing. You can use this as your wrapper for the automation object and do anything Excel does, but unfortunately I can't expose that directly, e.g., I can't expose a function that provides you with a live automation application object that will be closed when finished because you can't expose a COM object across library bounds. In order to build your own functionality you will have to descend your own class from ExcelApplicationBase, but built in are these functions: * ColumnReorder (as mentioned above): new ColumnReorderer().Reorder( newPath, (string list of columns the way you want ordered) ) * Sort: new Sorter().SortByColumn( columnIndex, path ) * CSV to XLSX: new CSVtoXLSXConverter().CSVto_XLSX( path ) * XLSX to CSV: new XLSXtoCSVConverter().XLSXto_CSV( path )
SOCI was initially developed in the environment where Oracle was the main database technology in use. As a wrapper for the native OCI API (Oracle Call Interface), the name 'Simple Oracle Call Interface' was quite obvious - until the 2.0 release, when the internal architecture was largely redesigned to allow the use of backends that support other database servers. We have kept the same name to indicate that Oracle is the main supported technology in the sense that the library includes only those features that were naturally implemented in Oracle. With the 2.1 release of the library, two new backends were added (MySQL and SQLite3) and we decided to drop the original full name so that new users looking for a library supporting any of these simpler libraries are not discouraged by seeing 'Oracle' somewhere in the name. The other possible interpretation was 'Syntax Oriented Call Interface', which stresses the fact that SOCI was built to support the most natural and easy interface for the user that is similar to the Embedded SQL concept (see below). But on the other hand, SOCI also provides other features (like object-relational mapping) and as a whole it is not just 'emulator' of the Embedded SQL. With all these considerations in mind, SOCI is just 'SOCI - The C++ Database Access Library'.
This extension to Entity Framework Core adds a Set<TContext, TEntity> method to IDbCOntextFactory<TContext>. This allows you to easily execute multiple queries in parallel without the need to write complex code, or a lot of using blocks or statements. You can stick to all your known methods from IQueryable<TEntity>. As the context is disposed after your query is executed, all results will obviously not be tracked and disconnected from any DbContext.
This is a general purpose commons library that I've built mostly for my own use within applications that I build (but obviously you are welcome to use it should you choose). The goal is to have an easy-to-use and uniform yet modular and pluggable facility to handle common cross-cutting concerns in my applications, thereby freeing me up to focus on the actual application concerns and hopefully making it easier and faster to build them. In general, the library consists of interfaces or SPIs along with ways to access them (using MEF). One can then build implementations for these interfaces (i.e. providers) and hook them up to an application through configuration. What this does for me is provide a uniform way to access these services in all my applications while allowing me to switch or extend providers as I see fit. For more detailed information and documentation, please visit the GitHub page for this repository at http://aashishkoirala.github.io/commons. You can find more of my stuff by visiting my page at http://aashishkoirala.github.io. The package is free to download and use. The source code is open and provided under the GPL license.
The .NET version of ZeroC's Internet Communications Engine (Ice). This is the version that was packaged for Ubuntu as "libzeroc-ice3.5-cil". So this is obviously not an official package. I created it because there is no official package.
Resources Over MVC (ROM) provides a set of attributes and extensions to allow you to simply introduce RESTful features to an existing web site or create a REST based web service from scratch, on top of the familiar ASP.Net MVC. ROM is not meant to be prescriptive about what constitutes a RESTful web service; there are plenty of opinions out on the web regarding that matter! In fact it was deliberately not called "Rest Over MVC" to avoid the assumption that using this assembly would magically mean your web service was RESTful. For that you will need to do some reading around, design your resources and decide what you think constitutes a RESTful web service. Hopefully you'll find that the set of helper attributes and extensions in this assembly are not too opinionated, but you should be able to use them to provide the following features: - Serve and receive multiple representations of resources (e.g. XML and JSON) - Support different encodings - Support a constrained number of methods - Allow representations to include hyper links - Overload the POST method Obviously, as this approach is based on ASP.Net, it is providing a web service over the HTTP protocol, so it does make use of standard: - HTTP headers - HTTP methods - HTTP status codes If you want to look into some of the history of the code I described the initial development on the Shoulders of Giants blog.
Starting in September 2012, Microsoft proposed a specification for unifying touch, pen and mouse events called pointer events. Currently this specification is a…draft :). So modern browsers are not supporting it right now. Only Internet Explorer 10 (obviously !) supports it through vendor prefixes. Hand.js is a polyfill that will allow you to write your code about touch only once even if the browser does not support pointer events. Write once, use it everywhere! Don't bother with mouse and touch events. Pointer events are here for you.
Represents a generic immutable sequence of T. Equality is, like strings, based on value not reference. It's essencially a wrapper for immutableArray, but with value based equality instead of reference based equality. For example: (5,2,2,4) equals (5,2,2,4) even if the reference is not the same, and (3,2) obviously doesn't equal (5,4,6); this example is working with Sequences of type: Sequence. The hashcode is generated by combining the hashcodes of all the elements in the set, with default(int) being the hashcode for an empty set.