How to set “Specific Version” property for project

2019-02-22 00:41发布

问题:

I have got a Visual Studio Solution containing several projects and have set up the references between the projects as project references.

When a reference to an assembly is added, the references' properties contain a setting for

Specific Version = True|False

This property is missing for project references. How can it be set? I'd like my solution to load any available assembly (no matter what version) in the bin folder.

I've had a problem when a workflow instance (Workflow Foundation) was deserialized and the dependencies were updated meanwhile.

回答1:

I think the problem is that what you are asking is not possible directly with a project reference, I think that always implicitly turns into an 'explicit version', because of the nature of the link.

The way you could do this (calling the currently referenced project A, and the referencing project B):

  • Have the project you want to reference in your solution, just like you do now with the project reference
  • Explicitly set the dependency chain so the 'referenced' project is built first
  • Build the referenced project A once first manually
  • Create an assembly reference in project B to the results from the build in project A
  • Set the assembly reference to 'Specific Version = false'

The build order (dependency) will guarantee that A is always built before B, and B will reference it from the binary output directory of A.

(altho, it's a little brittle and I would not recommend it since it's easy to get wrong results if the settings are not all right, or the sun aligns with the stars wrong, or some such)



回答2:

I might be misunderstanding your question, but when you add a project reference, the project's assembly is always loaded into any project that references it when the project is built. Therefore, you'll always have the latest available assembly in the bin folder for that project. VS treats projects differently than other assemblies in that regard.



回答3:

You can add references to project output dlls instead of projects. Then you will be able to set Specific Version setting.



回答4:

I have found the solution to my problem. It's described pretty detailed here. The problem is not a matter of wrong project references, but more a de/serializing of workflow instances question.

Thanks to everybody who tried to help.