Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Facility aspnet.systemweb #350

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,20 @@ _ReSharper*
*.cache
* Thumbs.db

#leftovers from merge
# Leftovers from merging
*.orig
*.bak
*.sln.DotSettings.user
*.DotSettings.user

# Buildscripts artifacts
buildscripts/**/obj/
buildscripts/**/bin/

# Tools artifacts
tools/**/obj/
tools/**/build/

# Docs artifacts
docs/obj/
docs/bin/
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Castle Windsor Changelog

## Unreleased

Breaking changes:
- Created System.Web facility so we can remove this from the Windsor core library, hopefully this will support OWIN better. (@fir3pho3nixx, #283)

## 4.1.0 (2017-09-28)

Bugfixes:
Expand Down
28 changes: 27 additions & 1 deletion Castle.Windsor.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26403.7
VisualStudioVersion = 15.0.26730.16
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Castle.Windsor", "src\Castle.Windsor\Castle.Windsor.csproj", "{5F6A631E-8EB1-4BC1-826D-86D3059945B8}"
EndProject
Expand Down Expand Up @@ -37,6 +37,14 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BuildScripts", "buildscript
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Castle Facilities", "Castle Facilities", "{7935AFF5-BF6D-4D59-8D66-058B6557F70F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Castle.Facilities.AspNet.SystemWeb", "src\Castle.Facilities.AspNet.SystemWeb\Castle.Facilities.AspNet.SystemWeb.csproj", "{225643EF-E982-4367-A3DB-8FF33CD7BE43}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Castle.Facilities.AspNet.SystemWeb.Tests", "src\Castle.Facilities.AspNet.SystemWeb.Tests\Castle.Facilities.AspNet.SystemWeb.Tests.csproj", "{42D88CAA-ACBC-44EF-87AD-7C467F78DFF3}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Castle Docs", "Castle Docs", "{FA3002E0-EEAC-44D4-80BC-5D9A38974976}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Documentation", "docs\Documentation.csproj", "{0C1EC041-E5A6-49F3-8287-EB0F827CD55D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -83,6 +91,18 @@ Global
{944CD23E-BEF8-4FBC-A76D-7BC85A7FB2F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{944CD23E-BEF8-4FBC-A76D-7BC85A7FB2F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{944CD23E-BEF8-4FBC-A76D-7BC85A7FB2F6}.Release|Any CPU.Build.0 = Release|Any CPU
{225643EF-E982-4367-A3DB-8FF33CD7BE43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{225643EF-E982-4367-A3DB-8FF33CD7BE43}.Debug|Any CPU.Build.0 = Debug|Any CPU
{225643EF-E982-4367-A3DB-8FF33CD7BE43}.Release|Any CPU.ActiveCfg = Release|Any CPU
{225643EF-E982-4367-A3DB-8FF33CD7BE43}.Release|Any CPU.Build.0 = Release|Any CPU
{42D88CAA-ACBC-44EF-87AD-7C467F78DFF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{42D88CAA-ACBC-44EF-87AD-7C467F78DFF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{42D88CAA-ACBC-44EF-87AD-7C467F78DFF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{42D88CAA-ACBC-44EF-87AD-7C467F78DFF3}.Release|Any CPU.Build.0 = Release|Any CPU
{0C1EC041-E5A6-49F3-8287-EB0F827CD55D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0C1EC041-E5A6-49F3-8287-EB0F827CD55D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0C1EC041-E5A6-49F3-8287-EB0F827CD55D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0C1EC041-E5A6-49F3-8287-EB0F827CD55D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -96,5 +116,11 @@ Global
{2162E27E-E0EB-470A-95FD-9AD6B802D0AB} = {7935AFF5-BF6D-4D59-8D66-058B6557F70F}
{148CDE3A-7633-4C20-8E7E-24D5919ABACF} = {7935AFF5-BF6D-4D59-8D66-058B6557F70F}
{944CD23E-BEF8-4FBC-A76D-7BC85A7FB2F6} = {7E507A42-984B-470D-8A0C-648B9AF8E1DC}
{225643EF-E982-4367-A3DB-8FF33CD7BE43} = {7935AFF5-BF6D-4D59-8D66-058B6557F70F}
{42D88CAA-ACBC-44EF-87AD-7C467F78DFF3} = {7935AFF5-BF6D-4D59-8D66-058B6557F70F}
{0C1EC041-E5A6-49F3-8287-EB0F827CD55D} = {FA3002E0-EEAC-44D4-80BC-5D9A38974976}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {199C82AE-1CCC-461C-A3DA-12112BCD595F}
EndGlobalSection
EndGlobal
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ Symbol | .NET 4.5 | .NET Standard
`FEATURE_SECURITY_PERMISSIONS` | :white_check_mark: | :no_entry_sign:
`FEATURE_SERIALIZATION` | :white_check_mark: | :no_entry_sign:
`FEATURE_SYSTEM_CONFIGURATION` | :white_check_mark: | :no_entry_sign:
`FEATURE_SYSTEM_WEB` | :white_check_mark: | :no_entry_sign:
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hope you are ok with this?

`FEATURE_URIMEMBERS` | :white_check_mark: | :no_entry_sign:
`FEATURE_WINFORMS` | :white_check_mark: | :no_entry_sign:

Expand Down
1 change: 1 addition & 0 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ on_success:
nuget push ".\build\Castle.Windsor.${env:APPVEYOR_BUILD_VERSION}.nupkg" -ApiKey $env:NUGET_API_KEY -Source https://api.nuget.org/v3/index.json
nuget push ".\build\Castle.LoggingFacility.${env:APPVEYOR_BUILD_VERSION}.nupkg" -ApiKey $env:NUGET_API_KEY -Source https://api.nuget.org/v3/index.json
nuget push ".\build\Castle.EventWiringFacility.${env:APPVEYOR_BUILD_VERSION}.nupkg" -ApiKey $env:NUGET_API_KEY -Source https://api.nuget.org/v3/index.json
nuget push ".\build\Castle.AspNet.SystemWebFacility.${env:APPVEYOR_BUILD_VERSION}.nupkg" -ApiKey $env:NUGET_API_KEY -Source https://api.nuget.org/v3/index.json
nuget push ".\build\Castle.FactorySupportFacility.${env:APPVEYOR_BUILD_VERSION}.nupkg" -ApiKey $env:NUGET_API_KEY -Source https://api.nuget.org/v3/index.json
nuget push ".\build\Castle.WcfIntegrationFacility.${env:APPVEYOR_BUILD_VERSION}.nupkg" -ApiKey $env:NUGET_API_KEY -Source https://api.nuget.org/v3/index.json
nuget push ".\build\Castle.SynchronizeFacility.${env:APPVEYOR_BUILD_VERSION}.nupkg" -ApiKey $env:NUGET_API_KEY -Source https://api.nuget.org/v3/index.json
Expand Down
3 changes: 3 additions & 0 deletions buildscripts/build.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ dotnet restore ./src/Castle.Facilities.EventWiring/Castle.Facilities.EventWiring
dotnet restore ./src/Castle.Facilities.FactorySupport/Castle.Facilities.FactorySupport.csproj
dotnet restore ./src/Castle.Facilities.Logging/Castle.Facilities.Logging.csproj
dotnet restore ./src/Castle.Facilities.Synchronize/Castle.Facilities.Synchronize.csproj
dotnet restore ./src/Castle.Facilities.AspNet.SystemWeb/Castle.Facilities.AspNet.SystemWeb.csproj
dotnet restore ./src/Castle.Facilities.WcfIntegration/Castle.Facilities.WcfIntegration.csproj
dotnet restore ./src/Castle.Facilities.WcfIntegration.Demo/Castle.Facilities.WcfIntegration.Demo.csproj
dotnet restore ./src/Castle.Facilities.WcfIntegration.Tests/Castle.Facilities.WcfIntegration.Tests.csproj
Expand All @@ -47,6 +48,7 @@ dotnet build Castle.Windsor.sln -c %Configuration%
.\tools\Explicit.NuGet.Versions\build\nev.exe ".\build" "castle.eventwiringfacility"
.\tools\Explicit.NuGet.Versions\build\nev.exe ".\build" "castle.factorysupportfacility"
.\tools\Explicit.NuGet.Versions\build\nev.exe ".\build" "castle.loggingfacility"
.\tools\Explicit.NuGet.Versions\build\nev.exe ".\build" "castle.aspnet.systemwebfacility"
.\tools\Explicit.NuGet.Versions\build\nev.exe ".\build" "castle.synchronizefacility"
.\tools\Explicit.NuGet.Versions\build\nev.exe ".\build" "castle.wcfintegrationfacility"
GOTO test
Expand All @@ -59,6 +61,7 @@ echo --------------------

SET nunitConsole=%UserProfile%\.nuget\packages\nunit.consolerunner\3.6.1\tools\nunit3-console.exe
%nunitConsole% src\Castle.Windsor.Tests\bin\%Configuration%\net45\Castle.Windsor.Tests.exe --result=src\Castle.Windsor.Tests\bin\%Configuration%\net45\TestResult_Windsor.xml || exit /b 1
%nunitConsole% src\Castle.Facilities.AspNet.SystemWeb.Tests\bin\%Configuration%\net45\Castle.Facilities.AspNet.SystemWeb.Tests.dll --result=src\Castle.Facilities.AspNet.SystemWeb.Tests\bin\%Configuration%\net45\TestResult_SystemWeb.xml || exit /b 1
%nunitConsole% src\Castle.Facilities.WcfIntegration.Tests\bin\%Configuration%\net45\Castle.Facilities.WcfIntegration.Tests.dll --result=src\Castle.Facilities.WcfIntegration.Tests\bin\%Configuration%\net45\TestResult_WcfIntegration.xml || exit /b 1

echo ---------------------------
Expand Down
2 changes: 1 addition & 1 deletion buildscripts/common.props
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
</PropertyGroup>

<PropertyGroup Condition="'$(TargetFramework)'=='net45'">
<DefineConstants>$(DefineConstants);FEATURE_PERFCOUNTERS;FEATURE_GAC;FEATURE_ISUPPORTINITIALIZE;FEATURE_REMOTING;FEATURE_SECURITY_PERMISSIONS;FEATURE_SYSTEM_WEB;FEATURE_SYSTEM_CONFIGURATION;FEATURE_WINFORMS;FEATURE_SERIALIZATION;FEATURE_URIMEMBERS;FEATURE_GETCALLINGASSEMBLY;FEATURE_APPDOMAIN;FEATURE_CODEDOM;FEATURE_ASSEMBLIES;FEATURE_REFLECTION_METHODBODY;CASTLE_SERVICES_LOGGING;FEATURE_EVENTLOG</DefineConstants>
<DefineConstants>$(DefineConstants);FEATURE_PERFCOUNTERS;FEATURE_GAC;FEATURE_ISUPPORTINITIALIZE;FEATURE_REMOTING;FEATURE_SECURITY_PERMISSIONS;FEATURE_SYSTEM_CONFIGURATION;FEATURE_WINFORMS;FEATURE_SERIALIZATION;FEATURE_URIMEMBERS;FEATURE_GETCALLINGASSEMBLY;FEATURE_APPDOMAIN;FEATURE_CODEDOM;FEATURE_ASSEMBLIES;FEATURE_REFLECTION_METHODBODY;CASTLE_SERVICES_LOGGING;FEATURE_EVENTLOG</DefineConstants>
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was kind of hoping we could get rid of this.

</PropertyGroup>

<PropertyGroup Condition="'$(TargetFramework)'=='netstandard1.6'">
Expand Down
12 changes: 12 additions & 0 deletions docs/Documentation.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net461</TargetFrameworks>
</PropertyGroup>

<PropertyGroup>
<SignAssembly>False</SignAssembly>
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
</PropertyGroup>

</Project>
1 change: 1 addition & 0 deletions docs/facilities.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ In addition to the above, as part of Castle Project, some other facilities are p
* [Synchronize Facility](synchronize-facility.md) - Integrates with synchronization elements of .NET Framework (like `ISynchronizeInvoke` interface, `SynchronizationContext`), ensures components that inherit `Control` get created on UI thread etc.
* [Automatic Transaction Management Facility](atm-facility.md) - This facility manages the creation of Transactions and the associated commit or rollback, depending on whether the method throws an exception or not. Transactions are logical. It is up the other integration to be transaction aware and enlist its resources on it.
* [MonoRail Integration Facility](https://github.com/castleproject/MonoRail/blob/master/MR2/docs/windsor-integration.md) - Provides integration with MonoRail controllers and internal services.
* [System Web Facility](systemweb-facility.md) - Provides system web integration for web projects using `PerWebRequest` lifestyles.

## Third Party Facilities

Expand Down
6 changes: 3 additions & 3 deletions docs/igenericimplementationmatchingstrategy.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Windsor supports so called *open generic components*, that is components that ar
For example:

```csharp
Container.Register(Component.For(typeof(IRepository<>)).ImplementedBy(typeof(MyRepository<>)).LifestylePerWebRequest());
Container.Register(Component.For(typeof(IRepository<>)).ImplementedBy(typeof(MyRepository<>)).LifestyleTransient());
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Web Requests really did not need to be tied to generics

```

This single component can then be used to satisfy dependencies on various closed versions of `IRepository<T>`:
Expand All @@ -28,7 +28,7 @@ public class MyRepository<T>: IRepository<T>, IRepository
}

// registration
Container.Register(Component.For(typeof(IRepository<>)).Forward<IRepository>().ImplementedBy(typeof(MyRepository<>)).LifestylePerWebRequest());
Container.Register(Component.For(typeof(IRepository<>)).Forward<IRepository>().ImplementedBy(typeof(MyRepository<>)).LifestyleTransient());
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here

```

In this case the open generic component exposes two services: the generic and non-generic version of repository interface. What should happen when the nen-generic one is requested?
Expand Down Expand Up @@ -91,5 +91,5 @@ To instruct Windsor to use your implementation of `IGenericImplementationMatchin
Container.Register(Component.For(typeof(IRepository<>))
.Forward<IRepository>()
.ImplementedBy(typeof(MyRepository<>), new RepositoryGenericCloser())
.LifestylePerWebRequest());
.LifestyleTransient());
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again. Generics and Web Requests ... not a thing.

```
2 changes: 1 addition & 1 deletion docs/installers.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class RepositoriesInstaller : IWindsorInstaller
container.Register(AllTypes.FromAssemblyNamed("Acme.Crm.Data")
.Where(type => type.Name.EndsWith("Repository"))
.WithService.DefaultInterfaces()
.Configure(c => c.LifeStyle.PerWebRequest));
.Configure(c => c.LifeStyle.LifestyleTransient));
}
}
```
Expand Down
10 changes: 0 additions & 10 deletions docs/lifestyles.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,6 @@ Container.Register(Component.For<MyTransientComponent>().LifestyleTransient());

:information_source: **What transients are good for:** Transient lifestyle is a good choice when you want to be in control of instance's lifetime. When you need new instance, with new state every time. Also transient components don't need to be thread safe, unless you explicitly use them in multi-threaded situations. In most applications you'll find that a large percentage of your components will end up as transient.

### PerWebRequest
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not a thing so I removed it from the main docs concerning lifestyles. We should be using scopes.


Instance of a component will be shared in scope of a single web request. The instance will be created the first time it's requested in scope of the web request. Releasing it explicitly does nothing. Instance will be released upon the end of the web request.

This is how you register a component as per web request:

```csharp
Container.Register(Component.For<MyPerWebRequestComponent>().LifestylePerWebRequest());
```

## Standard lifestyles: the less common ones

The lifestyles described above are the bread and butter of most applications. Occasionally though you'll need a more specialized lifestyle.
Expand Down
2 changes: 1 addition & 1 deletion docs/mvc-tutorial-part-7-lifestyles.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ That's however as far as we can get for what we want from `ISession`. When it's

### The `PerWebRequest` lifestyle

To change the `ISession` lifestyle to be per web request, we need to specify that in the registration. So we need to change it to the following:
Please install the `Castle.AspNet.SystemWebFacility` NuGet first. To change the `ISession` lifestyle to be per web request, we need to specify that in the registration. So we need to change it to the following:
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do believe this documentation is super dated. I did the minimum here, but after changing this I think there is a bit of work that needs to happen here to clear out the cruft.


```csharp
Kernel.Register(
Expand Down
60 changes: 60 additions & 0 deletions docs/systemweb-facility.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# System Web Facility

The system web facility provides legacy `scoped` management of lifestyles using [http modules](https://msdn.microsoft.com/library/ms178468.aspx) for desktop clr web based projects.

## How does it work?

Your objects consumed within a `PerWebRequest` lifestyle will effectively live for as long as that web request thread is active. It also use HttpContext.Current to track the lifecycle
of the instance. Once the web request has completed the instance gets released.

## What do I need to set it up?

You will need 3 things to get this going:

- Assembly reference to System.Web
- NuGet reference for [Microsoft.Web.Infrastructure](https://www.nuget.org/packages/Microsoft.Web.Infrastructure/)
- NuGet reference for [Castle.AspNet.SystemWebFacility](https://www.nuget.org/packages/Castle.AspNet.SystemWebFacility/)

After the release of v3.0 we expect you would not need this, but if you are still having problems with module registration
you might also need to update your web.config with the following:

```xml
<configuration>
<system.web>
<httpModules>
<add name="PerRequestLifestyle" type="Castle.Facilities.AspNet.SystemWeb.Lifestyle.PerWebRequestLifestyleModule, Castle.AspNet.SystemWebFacility"/>
</httpModules>
</system.web>
</configuration>
```

## How do I register objects?

You would new up a windsor container as usual then use the ComponentRegistration extensions of the facility to stipulate
'PerWebRequest' lifestyles. Like so:

```csharp

var container = new WindsorContainer();
container.Register(Component.For<PerWebRequestComponent>().LifestylePerWebRequest());

```

If you need the attribute based lifestyle approach you it is also available:

```csharp

[PerWebRequest]
public class PerWebRequestComponentWithAttributedLifestyle
{
}

var container = new WindsorContainer();
container.Register(Component.For<PerWebRequestComponentWithAttributedLifestyle>().Named("P"));

```

## I have problems and need help!

Please sign in to [GitHub](https://github.com/castleproject/Windsor) and raise an issue. Please be clear and
concise, if we have a code repro we can most definitely guide you.
1 change: 1 addition & 0 deletions docs/whats-new-3.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ var obj = Container.Resolve<IEmptyService>();
### No need to register `PerWebRequestLifestyleModule` via config file anymore

Adding stuff to web.config is now optional provided `Microsoft.Web.Infrastructure.dll` is installed on the computer. The assembly comes as part of ASP.NET MVC 3 or newer and some other tools like WebMatrix.
This has now moved to the `Castle.AspNet.SystemWebFacility`, you should install this NuGet for this to work.

### Added ability to scan all assemblies in an application for installers

Expand Down
2 changes: 2 additions & 0 deletions docs/windsor-for-structuremap-users.md
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,8 @@ HttpContext | PerWebRequest |
HttpSession | None/Custom | There's no direct equivalent in Windsor for this lifestyle, but implementing one is trivial
Hybrid | None/Custom | There's no direct equivalent in Windsor for this lifestyle, but implementing one is trivial

Please note that for `PerWebRequest` in Windsor you will need to install the `Castle.AspNet.SystemWebFacility` from NuGet.

## ConnectImplementationsToTypesClosing

StructureMap has `ConnectImplementationsToTypesClosing` that can used to register non-generic types with their base generic service. How can I do that with Windsor?
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net45</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\buildscripts\common.props"></Import>

<PropertyGroup>
<OutputType>Library</OutputType>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<AssemblyName>Castle.Facilities.AspNet.SystemWeb.Tests</AssemblyName>
<RootNamespace>Castle.Facilities.AspNet.SystemWeb.Tests</RootNamespace>
</PropertyGroup>

<PropertyGroup>
<!--This was the only way at the time of writing to $(OutputType) to honour the 'Exe' setting. This can probably be deleted from netcoreapp2.0(inclusive) onwards. Pathing dependencies: build.cmd -->
<RuntimeIdentifier Condition="'$(OS)'=='Windows_NT'">win7-x64</RuntimeIdentifier>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Castle.Core" Version="4.2.0" />
<PackageReference Include="NUnit" Version="3.6.1" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Castle.Facilities.AspNet.SystemWeb\Castle.Facilities.AspNet.SystemWeb.csproj" />
<ProjectReference Include="..\Castle.Windsor\Castle.Windsor.csproj" />
</ItemGroup>

<ItemGroup>
<Reference Include="System.Configuration" />
<Reference Include="System.Web" />
</ItemGroup>

</Project>
Loading