Comments (7)
Great suggestion, I've added this fucntionality in #56 which will be available shortly in version 1.4.6.
You can use it now by doing the following:
PackageRepository.Create(@"PathToPackageRepositoryRoot")
.Package("MyPackage", "1.0.0")
.FileCustom(@"analyzers\dotnet\cs", new FileInfo("PathToAnalyzer"));
from msbuildprojectcreator.
I'll work on a new feature to add feeds to the NuGet.config.
from msbuildprojectcreator.
Oh, I tried this today and this lib not working under VS + xunit test runner, but worked with dotnet test
.
Maybe similar with dotnet/msbuild#5600
Microsoft.Build.Exceptions.InvalidProjectFileException: 'The SDK resolver assembly "C:\Program Files\dotnet\sdk\3.1.400\Microsoft.Build.NuGetSdkResolver.dll" could not be loaded. An attempt was made to load a program with an incorrect format. (0x8007000B)
Code:
await MsBuild.SetMsBuildExeVariableAsync().ConfigureAwait(false);
string? tmpDir = null;
try {
var currentDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
tmpDir = Path.Combine(currentDir, "tmp", "analyzers_tests");
if (!Directory.Exists(tmpDir)) {
Directory.CreateDirectory(tmpDir);
}
if (!File.Exists(Path.Combine(tmpDir, "Directory.Build.props"))) {
await File.WriteAllTextAsync(Path.Combine(tmpDir, "Directory.Build.props"), "<Project />").ConfigureAwait(false);
}
if (!File.Exists(Path.Combine(tmpDir, "Directory.Build.targets"))) {
await File.WriteAllTextAsync(Path.Combine(tmpDir, "Directory.Build.targets"), "<Project />").ConfigureAwait(false);
}
var installPs1 = await File.ReadAllTextAsync(Path.Combine(currentDir, "install.ps1")).ConfigureAwait(false);
var pkgRepo = PackageRepository.Create(tmpDir)
.Package("My.Analyzer", "1.0.0", out PackageIdentity package)
.FileCustom(Path.Combine("analyzers", "dotnet", "cs", "My.Analyzer.dll"), new FileInfo(Path.Combine(currentDir, "My.Analyzer.dll")))
.FileText("install.ps1", installPs1);
var tmpFile = Path.Combine(tmpDir, "MyModule.csproj");
var creator = ProjectCreator.Templates.SdkCsproj(targetFramework: "netcoreapp3.1")
.ItemPackageReference(package, includeAssets: "runtime;build;native;contentfiles;analyzers", privateAssets: "all")
.Save(tmpFile)
.TryBuild(out var result, out var output);
}
finally {
if (tmpDir != null && Directory.Exists(tmpDir)) {
Directory.Delete(tmpDir, recursive: true);
}
}
from msbuildprojectcreator.
Hm, that was because Test runner
used auto. I switched to x64
and get some other issues. I'm working on them.
from msbuildprojectcreator.
And it doesn't work. Here's why:
The roslyn analyzer needs to load NETStandard.Library
, but generated NuGet.Config clears packageSources
, so I've got:
Unable to resolve 'NETStandard.Library (>= 2.0.3)' for '.NETStandard,Version=v2.0'.
Could you add api to add <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
to generated NuGet.Config ?
from msbuildprojectcreator.
This was done on purpose originally so that unit tests wouldn't be pulling packages from the network. Ideally the package repository used during tests only contains packages that were generated at build/run time. Do you need to test against netcoreapp3.1
? It won't need to pull NETStandard.Library
if you target net472
I think.
from msbuildprojectcreator.
This was done on purpose originally so that unit tests wouldn't be pulling packages from the network.
I understand this, but it's better to have something like .AddRemoteFeed("https://api.nuget.org/v3/index.json")
and yes, I use netcoreapp3.1 in tests.
I edit the generated NuGet.Config before build :(
from msbuildprojectcreator.
Related Issues (20)
- Let devs add their own library dll and/or arbitrary file to a package
- failure: MSB4223: A node of the required type InProc could not be created. HOT 14
- TryBuild restore: true and using projectCollection causes Build to be not isolated from "Restore"? HOT 4
- Tests timing out with the MSBUILDNOINPROCNODE change HOT 6
- 'Build' target (and .nuget.g.props) not included in binlog?
- System.IO.FileLoadException: Could not load file or assembly NuGet.Frameworks, Version=6.2.0.146 HOT 8
- Could not load file or assembly 'NuGet.Frameworks, Version=6.2.1.7... HOT 6
- Referencing a local `.nupkg` HOT 2
- Rebuilding project fails with duplicate generated AssemblyInfo HOT 1
- Best practices for preferring local .nupkg HOT 8
- TryBuild fails on plain sdk project build HOT 5
- How to save a binlog for a build? HOT 6
- Collecting build output breaks user specified loggers
- binlog corrupt when build failed? HOT 4
- Question: generate solutions? HOT 1
- Tests requiring NuGetSdkResolver not working? HOT 5
- Restore project information is not present in the binlog HOT 3
- Creating new ProjectCreator throws FileNotFoundException HOT 7
- Document how to handle resolving MSBuild assemblies
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from msbuildprojectcreator.