Giter Site home page Giter Site logo

Comments (7)

jeffkl avatar jeffkl commented on July 18, 2024 1

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.

jeffkl avatar jeffkl commented on July 18, 2024 1

I'll work on a new feature to add feeds to the NuGet.config.

from msbuildprojectcreator.

vchirikov avatar vchirikov commented on July 18, 2024

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);
    }
}

@jeffkl

from msbuildprojectcreator.

vchirikov avatar vchirikov commented on July 18, 2024

Hm, that was because Test runner used auto. I switched to x64 and get some other issues. I'm working on them.

from msbuildprojectcreator.

vchirikov avatar vchirikov commented on July 18, 2024

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.

jeffkl avatar jeffkl commented on July 18, 2024

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.

vchirikov avatar vchirikov commented on July 18, 2024

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)

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.