问题
I am learning ASP.NET Core 1.0 (vNext). With that in mind, I have a solution that is structured like this:
MySolution
src
MyLibrary
MyClass.cs
project.json
MyWebSite
Startup.cs
project.json
I am successfully compiling MyLibrary
from the command-line using dnu build
. I ran dnu pack
which generated MyLibrary.1.0.0.nupkg
. There are also two folders: dnx451
and dnxcore50
which both contain MyLibrary.1.0.0.dll
. I want to use MyLibrary
in MyWebSite
, however, I'm confused.
- How do I "include"
MyLibrary
intoMyWebSite
? Do I manually copy over the.dll
file? If so, which one? Should I use thenupkg
file instead? This is a private assembly, I do not want to publish it globally via NuGet. - What do I put in
MyWebSite/project.json
to reference theMyLibrary
assembly?
回答1:
You don't have to publish the package to NuGet if you don't want to share it with other people/projects outside of your solution. You can just reference the package directly from source.
However, if that still doesn't work for you then you have three options:
- Internalize using Roslyn. Example: project.json and the actual code
- You can reference the sources directly. Example project.json
- Create a build time dependency. Example project.json and actual code for the package
回答2:
Are you using Visual Studio 2015 RC? If so then follow these steps:
- Expand your web project in the Solution Explorer
- Right click on References
- Click on Add Reference... from the context menu
- Select Projects from the Reference Manager
- Tick the checkbox next to MyLibrary
- Click OK
- Profit
If you are not using visual studio then this can be achieved by updated the project.json file in your web project.
If you created a "vNext class library project" then add this to the dependencies property on the json object:
"dependencies": {
"MyLibrary": "1.0.0-*"
}
回答3:
- Several questions marked in bold.
(How do I "include" MyLibrary into MyWebSite?) In MyWebSite/project.json: Add the reference like this (don't worry about the version number not showing up).
(Do I manually copy over the .dll file?)
No
(This is a private assembly, I do not want to publish it globally via NuGet.)
Then don't do that :)
Referencing your class library from your web application will make sure it is included when building the web application. Then you should copy your web application files to an application server able to run it. I think you should try to publish your web application to an Azure Web app and then use server explorer to look at what the files on the server looks like after publishing. Or did you already know there is no reason to make a package before using it in you web app?
来源:https://stackoverflow.com/questions/30985426/referencing-library-in-asp-net-core-1-0-vnext