How to create a local nuget package and use it in my another project? #75167
Replies: 2 comments 12 replies
-
I would start by looking in the nuget package and making sure that everything is where you expect it to be. On a side note, are you using Unity? Unless that's true, please don't use |
Beta Was this translation helpful? Give feedback.
-
I've put my code here and my nuget package is here |
Beta Was this translation helpful? Give feedback.
-
I have a source generator project called metricsFactoryTest which will generate some factory code:
![image](https://private-user-images.githubusercontent.com/48521609/368940516-44c5c7eb-9aa2-4060-8ad1-e1903cfdeb8f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5NDc2MjcsIm5iZiI6MTczODk0NzMyNywicGF0aCI6Ii80ODUyMTYwOS8zNjg5NDA1MTYtNDRjNWM3ZWItOWFhMi00MDYwLThhZDEtZTE5MDNjZmRlYjhmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA3VDE2NTUyN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTkyNDEyMDVmNDRhNmFlNmY3ZjQ5ZmIzODFmMTFlZjAwODA1N2I0YmI0MGI3OTRmNTU3YTBiYjQ4ZWJmZTRiNWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.3fb3yW-P-HMLbYRsX8b9vSA6pi5rr6Ry6YCAlOTAJ-Q)
Now I want to reference this project in my another project called 'MainProject'.
One easy way to do this is to add a ProjectReference in the MainProject and this works for me
<ProjectReference Include="..\MetricsFactoryTest\MetricsFactoryTest.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" /> -->
But I want to publish the metricsFactoryTest to nuget package in the future and want to test locally if this package can work.
So I create a nuget package based on this guide: https://github.com/dotnet/roslyn/blob/main/docs/features/source-generators.cookbook.md#package-a-generator-as-a-nuget-package
here is my metricsFactoryTest.csproj file
![image](https://private-user-images.githubusercontent.com/48521609/368949704-4cb99be7-a210-4880-b614-5d0402c12465.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5NDc2MjcsIm5iZiI6MTczODk0NzMyNywicGF0aCI6Ii80ODUyMTYwOS8zNjg5NDk3MDQtNGNiOTliZTctYTIxMC00ODgwLWI2MTQtNWQwNDAyYzEyNDY1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA3VDE2NTUyN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThkZGM0N2E4ZDVjZjA3NDIyY2U1ZTQ5YTc2MjViNjlhNWIxMDU0M2U2NGFlZDliYTRhN2E4MDgxN2JmOWI4YTkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.PQEUDKQlJovJxCbml0d4lO37VlaHjkFwz2BWDLmD-8M)
and then I create a package using 'dotnet pack' cmd to generate
MetricsFactoryTest.1.0.0.nupkg
After that I install this local package through visual studio in my MainProject:
![image](https://private-user-images.githubusercontent.com/48521609/368946168-4d38257a-5e6b-4081-9c0c-a33b03885fa7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5NDc2MjcsIm5iZiI6MTczODk0NzMyNywicGF0aCI6Ii80ODUyMTYwOS8zNjg5NDYxNjgtNGQzODI1N2EtNWU2Yi00MDgxLTljMGMtYTMzYjAzODg1ZmE3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA3VDE2NTUyN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJjNGU3YzU5Y2M3OTA0ZDQ3YzhiNjY4OGFmM2E1ODY3N2NkNjM1OTJmNmQ5YmI2MmMzYTUyOTcwODdhZTYzZjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.fDYAZhygeDxIAeAxC3W7247q6YXtKtYuxu3AmBsrm0U)
Then a package reference is generated in my MainProject.csproj
<PackageReference Include="MetricsFactoryTest" Version="1.0.0" />
but thenMetricsFactoryTest will not work, I cannot see this analyzers in the visual studio and I cannot use the code generated.
![image](https://private-user-images.githubusercontent.com/48521609/368947199-c6b2d6d0-1d45-490f-949d-46d2daf4276e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5NDc2MjcsIm5iZiI6MTczODk0NzMyNywicGF0aCI6Ii80ODUyMTYwOS8zNjg5NDcxOTktYzZiMmQ2ZDAtMWQ0NS00OTBmLTk0OWQtNDZkMmRhZjQyNzZlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA3VDE2NTUyN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg2YzI4ZTcwNDk0NWI1YWJlNjg5YWNkNzY4YmZmYTY4NWIyYjVjZGQwZTkxZGJlZjIwMWUwNTVjNWVmMGIxZmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.pTD1aGzPd8obZxSUPiZRBietW19GVvEbrLg9bVb19VA)
if I switch back to project reference
<ProjectReference Include="..\MetricsFactoryTest\MetricsFactoryTest.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
the analyzer will show up again
![image](https://private-user-images.githubusercontent.com/48521609/368947674-f60e461c-48da-43ee-90d7-6ad3f63bc65e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5NDc2MjcsIm5iZiI6MTczODk0NzMyNywicGF0aCI6Ii80ODUyMTYwOS8zNjg5NDc2NzQtZjYwZTQ2MWMtNDhkYS00M2VlLTkwZDctNmFkM2Y2M2JjNjVlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA3VDE2NTUyN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBhNDgxYmI2YjY2MTBjNTY2NzNjMDQ5YjIzNDdmODk3MzYxZDQ4YjA1ODU0Yjg5NzY0MWFlOTk3ZTAxZGJlMWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.AQ5u3crNA6bOE_YfFgRKUZPEgJo8KMGw6IKb5FKFPyc)
So is there anything wrong with the my packaging steps? Not sure if I miss anything
Beta Was this translation helpful? Give feedback.
All reactions